From 6f23dd91cbe49e6d3945440b0f03110ef3d29fd4 Mon Sep 17 00:00:00 2001 From: Sebastian Pop Date: Wed, 11 Aug 2010 20:28:38 +0000 Subject: [PATCH] Unshare the scev before code generating it. 2010-07-15 Sebastian Pop * sese.c (rename_uses): Call unshare_expr before force_gimple_operand. * gcc.dg/graphite/id-23.c: New. From-SVN: r163149 --- gcc/ChangeLog | 4 ++++ gcc/ChangeLog.graphite | 6 ++++++ gcc/sese.c | 3 ++- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/graphite/id-23.c | 22 ++++++++++++++++++++++ 5 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/id-23.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1b6821160a3d..0e363faa00b0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2010-08-02 Sebastian Pop + + * sese.c (rename_uses): Call unshare_expr before force_gimple_operand. + 2010-08-02 Sebastian Pop * graphite-sese-to-poly.c (reduction_phi_p): Do not rewrite out of diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 1ddd73111022..d929c9a9f4b9 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,9 @@ +2010-07-15 Sebastian Pop + + * sese.c (rename_uses): Call unshare_expr before force_gimple_operand. + + * gcc.dg/graphite/id-23.c: New. + 2010-07-15 Sebastian Pop * graphite-sese-to-poly.c (reduction_phi_p): Do not rewrite out of diff --git a/gcc/sese.c b/gcc/sese.c index 9dbd76f85ea5..5ac7a2fc5b90 100644 --- a/gcc/sese.c +++ b/gcc/sese.c @@ -543,7 +543,8 @@ rename_uses (gimple copy, htab_t rename_map, gimple_stmt_iterator *gsi_tgt, && !tree_contains_chrecs (new_expr, NULL)); /* Replace the old_name with the new_expr. */ - new_expr = force_gimple_operand (new_expr, &stmts, true, NULL); + new_expr = force_gimple_operand (unshare_expr (new_expr), &stmts, + true, NULL); gsi_insert_seq_before (gsi_tgt, stmts, GSI_SAME_STMT); replace_exp (use_p, new_expr); set_rename (rename_map, old_name, new_expr); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6de617e15e47..46cf6464a5c3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2010-08-02 Sebastian Pop + + * gcc.dg/graphite/id-23.c: New. + 2010-08-02 Sebastian Pop * gfortran.dg/graphite/id-20.f: Adjust testcase. diff --git a/gcc/testsuite/gcc.dg/graphite/id-23.c b/gcc/testsuite/gcc.dg/graphite/id-23.c new file mode 100644 index 000000000000..0f8a1f32f6e9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/id-23.c @@ -0,0 +1,22 @@ +double *ZV_entries (void); +void SubMtx_fillRowZV (int irow) +{ + double *rowvec = ZV_entries (); + double *entries; + int ii, ipivot, jrow, kk, m; + int *pivotsizes; + + SubMtx_blockDiagonalInfo (&pivotsizes); + + for (jrow = ipivot = kk = 0; jrow <= irow; ipivot++) + { + m = pivotsizes[ipivot]; + if (jrow <= irow && irow < jrow + m) + for (ii = jrow; ii < irow; ii++) + { + rowvec[2*ii] = entries[2*kk]; + rowvec[2*ii+1] = entries[2*kk+1]; + } + jrow += m; + } +} -- 2.47.2