On Wed, Mar 16, 2011 at 03:38:25PM -0700, H.J. Lu wrote: IMNSHO you really should reconsider using Pmode != ptr_mode for your port.
That said, the patch looks good to me, though I can't approve it. > diff --git a/gcc/ChangeLog.x32 b/gcc/ChangeLog.x32 > index 764e3de..45db256 100644 > --- a/gcc/ChangeLog.x32 > +++ b/gcc/ChangeLog.x32 > @@ -1,5 +1,9 @@ > 2011-03-16 H.J. Lu <hongjiu...@intel.com> > > + * var-tracking.c (prepare_call_arguments): Check SUBREG. Just mention PR debug/48160 in the ChangeLog entry... > + > +2011-03-16 H.J. Lu <hongjiu...@intel.com> > + > PR rtl-optimization/48155 > * reload1.c (gen_reload): Check if XEXP (in, 0/1) is SUBREG of > REG in PLUS. > 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) Jakub