diff mbox

PATCH: PR debug/48160: prepare_call_arguments failed to handle subreg

Message ID 20110317180658.GA19480@intel.com
State New
Headers show

Commit Message

H.J. Lu March 17, 2011, 6:06 p.m. UTC
Hi Jason, Richard,

This patch:

http://gcc.gnu.org/ml/gcc-patches/2011-03/msg00814.html

failed to handle SUBREG in prepare_call_arguments.  This patch fixes it.
OK for trunk?

Thanks.


H.J.
---
2011-03-16  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR debug/48160
	* var-tracking.c (prepare_call_arguments): Check SUBREG.

Comments

Richard Henderson March 17, 2011, 7:47 p.m. UTC | #1
On 03/17/2011 11:06 AM, H.J. Lu wrote:
>  	PR debug/48160
> 	* var-tracking.c (prepare_call_arguments): Check SUBREG.

Ok.


r~
diff mbox

Patch

diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index 266f11f..cfa74a6 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -5763,7 +5763,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)