PR debug/43304
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Mar 2010 18:51:44 +0000 (18:51 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Mar 2010 18:51:44 +0000 (18:51 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157315 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/var-tracking.c

index e348458..4b68db5 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 0cd5dfc..378bb75 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));