summaryrefslogtreecommitdiff
path: root/gcc/valtrack.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2012-09-03 13:42:31 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2012-09-03 13:42:31 +0200
commitd540153b6766cc4079627ef9d70afff529b3301f (patch)
tree1cc0336651921c6cc3eba430381c6f918a4de8fc /gcc/valtrack.c
parent28b4fc515b603d90e022b8c0a75cde539a27d3d1 (diff)
downloadgcc-d540153b6766cc4079627ef9d70afff529b3301f.tar.gz
re PR debug/53923 (ICE: RTL check: expected code 'reg', have 'debug_expr' in rhs_regno, at rtl.h:1091)
PR debug/53923 * valtrack.c (dead_debug_insert_temp): Drop non-reg uses from the chain. From-SVN: r190883
Diffstat (limited to 'gcc/valtrack.c')
-rw-r--r--gcc/valtrack.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/valtrack.c b/gcc/valtrack.c
index b4eb5785ba3..2cdb06b174e 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;