re PR debug/43304 (ICE on vmx/fft.c and vmx/7-01{,a}.c)
authorJakub Jelinek <jakub@redhat.com>
Tue, 9 Mar 2010 18:51:44 +0000 (19:51 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 9 Mar 2010 18:51:44 +0000 (19:51 +0100)
PR debug/43304
* var-tracking.c (vt_expand_loc_callback) <case SUBREG>: If dummy,
call cselib_dummy_expand_value_rtx_cb instead of
cselib_expand_value_rtx_cb.

From-SVN: r157315

gcc/ChangeLog
gcc/var-tracking.c

index e348458c997e98bbb7f1c166d8e88cbc004351f7..4b68db52eae155b1f25899b4e8a38b803bf621ab 100644 (file)
@@ -1,4 +1,9 @@
-2010-03-08  Jakub Jelinek  <jakub@redhat.com>
+2010-03-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/43304
+       * var-tracking.c (vt_expand_loc_callback) <case SUBREG>: If dummy,
+       call cselib_dummy_expand_value_rtx_cb instead of
+       cselib_expand_value_rtx_cb.
 
        PR debug/43293
        * config/i386/t-i386 (i386.o): Depend on debug.h and dwarf2out.h.
index 0cd5dfc45aadfa0f1a4e1e93081e3182224a3e4e..378bb75bdb3ba6084877cefd1a4af8db088b8ae1 100644 (file)
@@ -6560,6 +6560,16 @@ vt_expand_loc_callback (rtx x, bitmap regs, int max_depth, void *data)
   switch (GET_CODE (x))
     {
     case SUBREG:
+      if (dummy)
+       {
+         if (cselib_dummy_expand_value_rtx_cb (SUBREG_REG (x), regs,
+                                               max_depth - 1,
+                                               vt_expand_loc_callback, data))
+           return pc_rtx;
+         else
+           return NULL;
+       }
+
       subreg = cselib_expand_value_rtx_cb (SUBREG_REG (x), regs,
                                           max_depth - 1,
                                           vt_expand_loc_callback, data);
@@ -6567,9 +6577,6 @@ vt_expand_loc_callback (rtx x, bitmap regs, int max_depth, void *data)
       if (!subreg)
        return NULL;
 
-      if (dummy)
-       return pc_rtx;
-
       result = simplify_gen_subreg (GET_MODE (x), subreg,
                                    GET_MODE (SUBREG_REG (x)),
                                    SUBREG_BYTE (x));