From: Sebastian Pop Date: Wed, 11 Aug 2010 20:31:24 +0000 (+0000) Subject: Fix miscompile of 416.gamess. X-Git-Tag: releases/gcc-4.6.0~5041 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9707eeb0cfd8cb4e6a8bcdeafe1f47dc42462c2f;p=thirdparty%2Fgcc.git Fix miscompile of 416.gamess. 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. From-SVN: r163169 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ffd36c30e758..acad602018e3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2010-08-02 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-08-02 Sebastian Pop * graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): The only diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 1d3e64d2b688..e43d2ce50dba 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 38e408c753b6..4b94bcb4e777 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -2249,6 +2249,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. */