aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-05-18 11:22:41 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2011-05-18 11:22:41 +0200
commit116bc3a4d8ddc47c07bd9e619cd4f860d491069d (patch)
treee002a97f6a3a48c62d9a153ebadda0baf1093ecc /gcc/tree-ssa.c
parentbf6490b56fc40295607429331a49de4c4ac46371 (diff)
downloadgcc-116bc3a4d8ddc47c07bd9e619cd4f860d491069d.zip
gcc-116bc3a4d8ddc47c07bd9e619cd4f860d491069d.tar.gz
gcc-116bc3a4d8ddc47c07bd9e619cd4f860d491069d.tar.bz2
re PR tree-optimization/49000 (ICE: verify_ssa failed with -O2 -g)
PR tree-optimization/49000 * tree-ssa.c (execute_update_addresses_taken): Call maybe_rewrite_mem_ref_base on debug stmt value. If it couldn't be rewritten and decl has been marked for renaming, reset the debug stmt. * gcc.dg/pr49000.c: New test. From-SVN: r173849
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r--gcc/tree-ssa.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index f596fcd..ba5a20b 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -2230,6 +2230,17 @@ execute_update_addresses_taken (void)
}
}
+ else if (gimple_debug_bind_p (stmt)
+ && gimple_debug_bind_has_value_p (stmt))
+ {
+ tree *valuep = gimple_debug_bind_get_value_ptr (stmt);
+ tree decl;
+ maybe_rewrite_mem_ref_base (valuep);
+ decl = non_rewritable_mem_ref_base (*valuep);
+ if (decl && symbol_marked_for_renaming (decl))
+ gimple_debug_bind_reset_value (stmt);
+ }
+
if (gimple_references_memory_p (stmt)
|| is_gimple_debug (stmt))
update_stmt (stmt);