diff options
author | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-03-13 17:35:45 +0000 |
---|---|---|
committer | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-03-13 17:35:45 +0000 |
commit | 5a644317084d97fc349418e446682721319b5c06 (patch) | |
tree | 3e0d0726407ed2507e5a52629209e8a764cfbe6f | |
parent | 197de505f546b281cae1530deaccb7f7cf83071f (diff) | |
download | gcc-5a644317084d97fc349418e446682721319b5c06.tar.gz |
Fix PR43354: Correctly handle default definitions.
2010-03-13 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/43354
* graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): Do not
call insert_out_of_ssa_copy for default definitions.
* gfortran.dg/graphite/id-pr43354.f: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157440 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog.graphite | 9 | ||||
-rw-r--r-- | gcc/graphite-sese-to-poly.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/graphite/id-pr43354.f | 18 |
3 files changed, 28 insertions, 2 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 331c080256b..1659de6c1bb 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,4 +1,11 @@ -2010-03-11 Sebastian Pop <sebastian.pop@amd.com> +2010-03-13 Sebastian Pop <sebastian.pop@amd.com> + + PR middle-end/43354 + * graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): Do not + call insert_out_of_ssa_copy for default definitions. + * gfortran.dg/graphite/id-pr43354.f: New. + +2010-03-13 Sebastian Pop <sebastian.pop@amd.com> PR middle-end/43349 * gfortran.dg/graphite/pr43349.f: New. diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 0f370a80667..b0bc3481cd2 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -2200,7 +2200,8 @@ rewrite_close_phi_out_of_ssa (gimple_stmt_iterator *psi) gimple stmt = gimple_build_assign (res, zero_dim_array); tree arg = gimple_phi_arg_def (phi, 0); - if (TREE_CODE (arg) == SSA_NAME) + if (TREE_CODE (arg) == SSA_NAME + && !SSA_NAME_IS_DEFAULT_DEF (arg)) insert_out_of_ssa_copy (zero_dim_array, arg); else insert_out_of_ssa_copy_on_edge (single_pred_edge (gimple_bb (phi)), diff --git a/gcc/testsuite/gfortran.dg/graphite/id-pr43354.f b/gcc/testsuite/gfortran.dg/graphite/id-pr43354.f new file mode 100644 index 00000000000..e614f912bdd --- /dev/null +++ b/gcc/testsuite/gfortran.dg/graphite/id-pr43354.f @@ -0,0 +1,18 @@ + SUBROUTINE POFUN2(DIM,GRDENT,FPART,FPARTL) + DOUBLE PRECISION GRDENT(*) + DOUBLE COMPLEX FPART(*) + DOUBLE COMPLEX FPARTL(*) + INTEGER REFLCT,XRIREF + IF (DIM.GT.1) THEN + ABCS3=XRCELL(1) + IF (ABCS2.EQ.ABCS3) THEN + END IF + ELSE + DO REFLCT=1,XRIREF,1 + FPARTL(REFLCT)=FPART(REFLCT) + END DO + END IF + IF (ABCS2.EQ.ABCS3) THEN + GRDENT(1)=GRDENT(3) + END IF + END |