]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR debug/53923 (ICE: RTL check: expected code 'reg', have 'debug_expr' in rhs_regn...
authorJakub Jelinek <jakub@redhat.com>
Mon, 3 Sep 2012 11:42:31 +0000 (13:42 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 3 Sep 2012 11:42:31 +0000 (13:42 +0200)
PR debug/53923
* valtrack.c (dead_debug_insert_temp): Drop non-reg uses
from the chain.

From-SVN: r190883

gcc/ChangeLog
gcc/valtrack.c

index ad59d6348f464ff5876d312d2906e0edee1d6783..4fdfa96623154e1e9aec42aa6bd22469f2df893c 100644 (file)
@@ -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.
index b4eb5785ba315ad5b1c4a2f28364e86553164590..2cdb06b174e7c916c62f055ee8c7d45ace4c2848 100644 (file)
@@ -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;