aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-05-18 09:22:41 +0000
committerJakub Jelinek <jakub@redhat.com>2011-05-18 09:22:41 +0000
commit2844645dd37fd131f931f6a5e528f31ef0462481 (patch)
treee002a97f6a3a48c62d9a153ebadda0baf1093ecc /gcc/tree-ssa.c
parent6ffe4f7a456d36f48ec53230d075e64dbf13008d (diff)
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. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@173849 138bc75d-0d04-0410-961f-82ee72b054a4
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 f596fcd870c..ba5a20b6e47 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);