aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/valtrack.c8
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;