OSDN Git Service

Check SUBREG in prepare_call_arguments.
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Mar 2011 19:51:03 +0000 (19:51 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Mar 2011 19:51:03 +0000 (19:51 +0000)
2011-03-17  H.J. Lu  <hongjiu.lu@intel.com>

PR debug/48160
* var-tracking.c (prepare_call_arguments): Check SUBREG.

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

gcc/ChangeLog
gcc/var-tracking.c

index 7d028f7..887e014 100644 (file)
@@ -1,5 +1,10 @@
 2011-03-17  H.J. Lu  <hongjiu.lu@intel.com>
 
+       PR debug/48160
+       * var-tracking.c (prepare_call_arguments): Check SUBREG.
+
+2011-03-17  H.J. Lu  <hongjiu.lu@intel.com>
+
        PR target/48171
        * config/i386/i386.opt: Add Save to -mavx and -mfma.
 
index aab9833..7c4c2c5 100644 (file)
@@ -5770,7 +5770,11 @@ prepare_call_arguments (basic_block bb, rtx insn)
 
                    /* Try harder, when passing address of a constant
                       pool integer it can be easily read back.  */
-                   val = CSELIB_VAL_PTR (XEXP (item, 1));
+                   item = XEXP (item, 1);
+                   if (GET_CODE (item) == SUBREG)
+                     item = SUBREG_REG (item);
+                   gcc_assert (GET_CODE (item) == VALUE);
+                   val = CSELIB_VAL_PTR (item);
                    for (l = val->locs; l; l = l->next)
                      if (GET_CODE (l->loc) == SYMBOL_REF
                          && TREE_CONSTANT_POOL_ADDRESS_P (l->loc)