From patchwork Thu Jul 29 20:21:16 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Pop X-Patchwork-Id: 60313 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]) by ozlabs.org (Postfix) with SMTP id 3D1E7B70BE for ; Fri, 30 Jul 2010 06:21:44 +1000 (EST) Received: (qmail 8118 invoked by alias); 29 Jul 2010 20:21:41 -0000 Received: (qmail 8104 invoked by uid 22791); 29 Jul 2010 20:21:38 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, TW_TM, T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-gx0-f175.google.com (HELO mail-gx0-f175.google.com) (209.85.161.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 29 Jul 2010 20:21:31 +0000 Received: by gxk2 with SMTP id 2so309544gxk.20 for ; Thu, 29 Jul 2010 13:21:29 -0700 (PDT) Received: by 10.151.63.23 with SMTP id q23mr1836534ybk.133.1280434889583; Thu, 29 Jul 2010 13:21:29 -0700 (PDT) Received: from napoca (cpe-70-120-196-107.austin.res.rr.com [70.120.196.107]) by mx.google.com with ESMTPS id m12sm1281288ybn.19.2010.07.29.13.21.26 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 29 Jul 2010 13:21:28 -0700 (PDT) Received: by napoca (sSMTP sendmail emulation); Thu, 29 Jul 2010 15:21:22 -0500 From: Sebastian Pop To: gcc-patches@gcc.gnu.org Cc: gcc-graphite@googlegroups.com, Sebastian Pop Subject: [PATCH 1/2] Fix miscompile of 416.gamess. Date: Thu, 29 Jul 2010 15:21:16 -0500 Message-Id: <1280434877-24563-2-git-send-email-sebpop@gmail.com> In-Reply-To: <1280434877-24563-1-git-send-email-sebpop@gmail.com> References: <1280434877-24563-1-git-send-email-sebpop@gmail.com> X-IsSubscribed: yes 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 2010-07-29 Sebastian Pop * graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): Add back the case removed in the previous patch, when the only phi argument is defined in the same loop as the phi node itself. Handle it separately from the invariant case by both propagating it outside the region and replacing the phi node with an assign. --- gcc/ChangeLog.graphite | 8 ++++++++ gcc/graphite-sese-to-poly.c | 10 ++++++++++ 2 files changed, 18 insertions(+), 0 deletions(-) diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 77aa85c..e040d6e 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,11 @@ +2010-07-29 Sebastian Pop + + * graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): Add back + the case removed in the previous patch, when the only phi argument + is defined in the same loop as the phi node itself. Handle it + separately from the invariant case by both propagating it outside + the region and replacing the phi node with an assign. + 2010-07-28 Sebastian Pop * graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): The only diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 05a0e8f..1503e2c 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -2248,6 +2248,16 @@ rewrite_close_phi_out_of_ssa (gimple_stmt_iterator *psi, sese region) return; } + else if (gimple_bb (SSA_NAME_DEF_STMT (arg))->loop_father == bb->loop_father) + { + propagate_expr_outside_region (res, arg, region); + stmt = gimple_build_assign (res, arg); + remove_phi_node (psi, false); + gsi_insert_before (&gsi, stmt, GSI_NEW_STMT); + SSA_NAME_DEF_STMT (res) = stmt; + return; + } + /* If res is scev analyzable and is not a scalar value, it is safe to ignore the close phi node: it will be code generated in the out of Graphite pass. */