diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/valtrack.c | 8 |
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ad59d63..4fdfa96 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-09-03 Jakub Jelinek <jakub@redhat.com> + + PR debug/53923 + * valtrack.c (dead_debug_insert_temp): Drop non-reg uses + from the chain. + 2012-09-03 Joseph Myers <joseph@codesourcery.com> * common.opt (--no-sysroot-suffix): New driver option. diff --git a/gcc/valtrack.c b/gcc/valtrack.c index b4eb578..2cdb06b 100644 --- a/gcc/valtrack.c +++ b/gcc/valtrack.c @@ -333,6 +333,14 @@ dead_debug_insert_temp (struct dead_debug *debug, unsigned int uregno, { if (DF_REF_REGNO (cur->use) == uregno) { + /* If this loc has been changed e.g. to debug_expr already + as part of a multi-register use, just drop it. */ + if (!REG_P (*DF_REF_REAL_LOC (cur->use))) + { + *tailp = cur->next; + XDELETE (cur); + continue; + } *usesp = cur; usesp = &cur->next; *tailp = cur->next; |