diff options
author | Richard Guenther <rguenther@suse.de> | 2011-03-17 14:59:00 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-03-17 14:59:00 +0000 |
commit | 1bce4ff313bf2e2c9e942df52b494bf22886f163 (patch) | |
tree | 19bd7dee07e0dcd9a4bc23e10fac377ef22b686a /gcc/tree-ssa.c | |
parent | 7c71147df33fe3ee5e8352fba3d6cfbc15810604 (diff) | |
download | gcc-1bce4ff313bf2e2c9e942df52b494bf22886f163.zip gcc-1bce4ff313bf2e2c9e942df52b494bf22886f163.tar.gz gcc-1bce4ff313bf2e2c9e942df52b494bf22886f163.tar.bz2 |
re PR tree-optimization/48134 (ICE: in refs_may_alias_p_1, at tree-ssa-alias.c:1085 with custom flags)
2011-03-17 Richard Guenther <rguenther@suse.de>
PR middle-end/48134
* tree-ssa.c (insert_debug_temp_for_var_def): If we propagated
a value make sure to fold the statement.
* gcc.dg/pr48134.c: New testcase.
From-SVN: r171098
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r-- | gcc/tree-ssa.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index e7e3edc..d542e0a 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -455,13 +455,19 @@ insert_debug_temp_for_var_def (gimple_stmt_iterator *gsi, tree var) continue; if (value) - FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter) - /* unshare_expr is not needed here. vexpr is either a - SINGLE_RHS, that can be safely shared, some other RHS - that was unshared when we found it had a single debug - use, or a DEBUG_EXPR_DECL, that can be safely - shared. */ - SET_USE (use_p, value); + { + FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter) + /* unshare_expr is not needed here. vexpr is either a + SINGLE_RHS, that can be safely shared, some other RHS + that was unshared when we found it had a single debug + use, or a DEBUG_EXPR_DECL, that can be safely + shared. */ + SET_USE (use_p, value); + /* If we didn't replace uses with a debug decl fold the + resulting expression. Otherwise we end up with invalid IL. */ + if (TREE_CODE (value) != DEBUG_EXPR_DECL) + fold_stmt_inplace (stmt); + } else gimple_debug_bind_reset_value (stmt); |