aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2010-03-13 17:35:45 +0000
committerSebastian Pop <spop@gcc.gnu.org>2010-03-13 17:35:45 +0000
commit6492b6940bc32a7d102628934e945c268304d058 (patch)
tree3e0d0726407ed2507e5a52629209e8a764cfbe6f
parent113081e4d98737521979b47093ec64b065228b76 (diff)
downloadgcc-6492b6940bc32a7d102628934e945c268304d058.zip
gcc-6492b6940bc32a7d102628934e945c268304d058.tar.gz
gcc-6492b6940bc32a7d102628934e945c268304d058.tar.bz2
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. From-SVN: r157440
-rw-r--r--gcc/ChangeLog.graphite9
-rw-r--r--gcc/graphite-sese-to-poly.c3
-rw-r--r--gcc/testsuite/gfortran.dg/graphite/id-pr43354.f18
3 files changed, 28 insertions, 2 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite
index 331c080..1659de6 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 0f370a8..b0bc348 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 0000000..e614f91
--- /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