From 5a644317084d97fc349418e446682721319b5c06 Mon Sep 17 00:00:00 2001 From: spop Date: Sat, 13 Mar 2010 17:35:45 +0000 Subject: [PATCH] Fix PR43354: Correctly handle default definitions. 2010-03-13 Sebastian Pop 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 --- gcc/ChangeLog.graphite | 9 ++++++++- gcc/graphite-sese-to-poly.c | 3 ++- gcc/testsuite/gfortran.dg/graphite/id-pr43354.f | 18 ++++++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/graphite/id-pr43354.f 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 +2010-03-13 Sebastian Pop + + 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 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 -- 2.11.0