From patchwork Wed Jan 21 22:32:45 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Mi X-Patchwork-Id: 431626 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 623D514017F for ; Thu, 22 Jan 2015 09:32:59 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:date:message-id:subject:from:to:cc:content-type; q=dns; s=default; b=ekGuQOkZHyJ1OwRGxn+j7rP+PjsI8BZm6qZJx2ccDhF rqwrWz7jczcyl3fAVuJVwbdXQCGv2OE3574Qc/Z8RRo2qj+bDInFpswGtJvO+b2F cSzjC7BlYtHptE3ppUleD+aFRHGf38vr1tfAy8v90RJYYFUOiLKkrL7wAbLa5UyM = DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:date:message-id:subject:from:to:cc:content-type; s=default; bh=F3Lod9bNHlyEFFxhpPlZodNqTXQ=; b=g9cL/XMKdRrqFuduc nuPiy1mX5DNYnmRcZWfXtCy2cjv6YDcENrI6nPJemBG4ioqogSqWg9DhP5rpOXEO k/5irnKU2kRAs+/l5Oib2Np6PwPYJzslizopZtNI0Yqs5m8vpOo1/hPDgBxsmwIZ serWtQlHliOxma8KP3hjsc4m2g= Received: (qmail 10366 invoked by alias); 21 Jan 2015 22:32:51 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10338 invoked by uid 89); 21 Jan 2015 22:32:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.7 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, SPF_PASS, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mail-ie0-f176.google.com Received: from mail-ie0-f176.google.com (HELO mail-ie0-f176.google.com) (209.85.223.176) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 21 Jan 2015 22:32:47 +0000 Received: by mail-ie0-f176.google.com with SMTP id rd18so15969346iec.7 for ; Wed, 21 Jan 2015 14:32:45 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to:cc :content-type; bh=UqHhLWFsLPQTd+4OxlMAWCGRSysOnpLpJugLAttMRjY=; b=mpziHnkkZ74DKDfR6d0XGWPmeR6tMro+KXU3BcQKvrhmKQfuiogJJEArLm678xHu/b Sgk3h0Wr0xL9d/8rzBUqLOcMusaPbDZhmeBgWbfhc9QvDTEzgJcHyurdZ17nrqWAnvJH JLBtAaRL2X3sSrlDTMsJOKsqP2YEd6qiKl9MrDVbX24kq29Sa21vm8SvTKMgJqCIBKnL +n/g/+PxCvcs5V9aatXKx6fFL90HJDIiSPune3iBf22Xr6RpcI4XB0dyYUGxDdEB3LVo R3rqcjDud5lGVd3L1K0/jBmR/xHtU1FYXj8ct6PR7x+eZFLrR+Dv//EomwNYapDj7ByU OvqA== X-Gm-Message-State: ALoCoQlusQBpCuYjwejmjQSwAaBmv+RN/paeSuaa41ocNUhMikBy/tvV+DeKLBxGLoYUdXN+aW7H MIME-Version: 1.0 X-Received: by 10.50.36.104 with SMTP id p8mr26212687igj.16.1421879565490; Wed, 21 Jan 2015 14:32:45 -0800 (PST) Received: by 10.50.26.1 with HTTP; Wed, 21 Jan 2015 14:32:45 -0800 (PST) Date: Wed, 21 Jan 2015 14:32:45 -0800 Message-ID: Subject: [PATCH PR64557] get_addr in true_dependence_1 cannot handle VALUE inside an expr From: Wei Mi To: GCC Patches Cc: Uros Bizjak , Jeff Law , David Li Hi, The patch is to address the bug here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64557 It is to call get_addr for VALUE before forming a mem_addr expr with the VALUE and an offset. This is to avoid the problem that get_addr can only handle VALUE but cannot handle an expr like: (VALUE + offset). With the fix, find_base_term can always get the base of the original addr. bootstrap and regression test on x86_64-linux-gnu are ok. regression tests on aarch64-linux-gnu and powerpc64-linux-gnu are also ok. Is it ok for trunk? Thanks, Wei. gcc/ChangeLog: 2015-01-21 Wei Mi * dse.c (record_store): Call get_addr for mem_addr. (check_mem_read_rtx): Likewise. Index: gcc/dse.c =================================================================== --- gcc/dse.c (revision 219975) +++ gcc/dse.c (working copy) @@ -1575,6 +1575,7 @@ record_store (rtx body, bb_info_t bb_inf = rtx_group_vec[group_id]; mem_addr = group->canon_base_addr; } + mem_addr = get_addr (mem_addr); if (offset) mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset); } @@ -2188,6 +2189,7 @@ check_mem_read_rtx (rtx *loc, bb_info_t = rtx_group_vec[group_id]; mem_addr = group->canon_base_addr; } + mem_addr = get_addr (mem_addr); if (offset) mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset); }