diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-05-18 09:22:41 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2011-05-18 09:22:41 +0000 |
commit | 2844645dd37fd131f931f6a5e528f31ef0462481 (patch) | |
tree | e002a97f6a3a48c62d9a153ebadda0baf1093ecc /gcc/tree-ssa.c | |
parent | 6ffe4f7a456d36f48ec53230d075e64dbf13008d (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.c | 11 |
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); |