aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenth@gcc.gnu.org>2017-10-24 07:02:48 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-10-24 07:02:48 +0000
commitd32bc875d2297f2f2240e8aad2082be4d1f851d8 (patch)
tree17bd6804bb91862e208f10a563382c2db21b95b3 /gcc
parent57f6a200e324c605ed19fef107e528d0b902770a (diff)
downloadgcc-d32bc875d2297f2f2240e8aad2082be4d1f851d8.zip
gcc-d32bc875d2297f2f2240e8aad2082be4d1f851d8.tar.gz
gcc-d32bc875d2297f2f2240e8aad2082be4d1f851d8.tar.bz2
re PR tree-optimization/82672 ([GRAPHITE] ICE in verify_gimple_in_cfg)
2017-10-23 Richard Biener <rguenther@suse.de> PR tree-optimization/82672 * graphite-isl-ast-to-gimple.c (graphite_copy_stmts_from_block): Fold the stmt if we propagated into it. * gfortran.dg/graphite/pr82672.f90: New testcase. From-SVN: r254036
Diffstat (limited to 'gcc')
-rw-r--r--gcc/graphite-isl-ast-to-gimple.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c
index b39ac54..16570e1 100644
--- a/gcc/graphite-isl-ast-to-gimple.c
+++ b/gcc/graphite-isl-ast-to-gimple.c
@@ -1175,22 +1175,28 @@ graphite_copy_stmts_from_block (basic_block bb, basic_block new_bb,
ssa_op_iter iter;
use_operand_p use_p;
if (!is_gimple_debug (copy))
- FOR_EACH_SSA_USE_OPERAND (use_p, copy, iter, SSA_OP_USE)
- {
- tree old_name = USE_FROM_PTR (use_p);
-
- if (TREE_CODE (old_name) != SSA_NAME
- || SSA_NAME_IS_DEFAULT_DEF (old_name)
- || ! scev_analyzable_p (old_name, region->region))
- continue;
-
- gimple_seq stmts = NULL;
- tree new_name = get_rename_from_scev (old_name, &stmts,
- bb->loop_father, iv_map);
- if (! codegen_error_p ())
- gsi_insert_earliest (stmts);
- replace_exp (use_p, new_name);
- }
+ {
+ bool changed = false;
+ FOR_EACH_SSA_USE_OPERAND (use_p, copy, iter, SSA_OP_USE)
+ {
+ tree old_name = USE_FROM_PTR (use_p);
+
+ if (TREE_CODE (old_name) != SSA_NAME
+ || SSA_NAME_IS_DEFAULT_DEF (old_name)
+ || ! scev_analyzable_p (old_name, region->region))
+ continue;
+
+ gimple_seq stmts = NULL;
+ tree new_name = get_rename_from_scev (old_name, &stmts,
+ bb->loop_father, iv_map);
+ if (! codegen_error_p ())
+ gsi_insert_earliest (stmts);
+ replace_exp (use_p, new_name);
+ changed = true;
+ }
+ if (changed)
+ fold_stmt_inplace (&gsi_tgt);
+ }
update_stmt (copy);
}