diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-06-09 09:46:28 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-06-09 09:46:28 +0200 |
commit | 8ced31fe6da7fbdc1ec732d7ccbf8f3f401cee0d (patch) | |
tree | 04c78a3f0d60ea8375218ae474e406d2d7bf67f4 /gcc/dce.c | |
parent | 10c4cabcde3983eb6b79bb9105fd60bc0bfd4361 (diff) | |
download | gcc-8ced31fe6da7fbdc1ec732d7ccbf8f3f401cee0d.zip gcc-8ced31fe6da7fbdc1ec732d7ccbf8f3f401cee0d.tar.gz gcc-8ced31fe6da7fbdc1ec732d7ccbf8f3f401cee0d.tar.bz2 |
re PR middle-end/49308 (segfault in rest_of_handle_ud_dce () at gcc/gcc/dce.c:518)
PR middle-end/49308
* dce.c (reset_unmarked_insns_debug_uses): Avoid shadowing insn
variable. After resetting and rescanning insn continue with previous
statement.
* gfortran.dg/pr49308.f90: New test.
From-SVN: r174839
Diffstat (limited to 'gcc/dce.c')
-rw-r--r-- | gcc/dce.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -514,11 +514,11 @@ reset_unmarked_insns_debug_uses (void) struct df_link *defs; for (defs = DF_REF_CHAIN (use); defs; defs = defs->next) { - rtx insn; + rtx ref_insn; if (DF_REF_IS_ARTIFICIAL (defs->ref)) continue; - insn = DF_REF_INSN (defs->ref); - if (!marked_insn_p (insn)) + ref_insn = DF_REF_INSN (defs->ref); + if (!marked_insn_p (ref_insn)) break; } if (!defs) @@ -527,6 +527,7 @@ reset_unmarked_insns_debug_uses (void) each of the DEFs? */ INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC (); df_insn_rescan_debug_internal (insn); + break; } } } |