On Mon, May 09, 2011 at 10:58:56AM -0700, H.J. Lu wrote: > On Fri, May 6, 2011 at 6:11 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > > 2011-05-06 H.J. Lu <hongjiu...@intel.com> > > > > PR debug/48853 > > * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: If > > POINTERS_EXTEND_UNSIGNED, don't give up if mode is Pmode and > > mem_mode is not VOIDmode. > > > > diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c > > index 026e4a7..049ca8e 100644 > > --- a/gcc/dwarf2out.c > > +++ b/gcc/dwarf2out.c > > @@ -13892,7 +13892,11 @@ mem_loc_descriptor (rtx rtl, enum machine_mode > > mode, > > break; > > if (GET_MODE_CLASS (mode) == MODE_INT > > && GET_MODE_CLASS (GET_MODE (SUBREG_REG (rtl))) == MODE_INT > > - && GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE > > + && (GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE > > +#ifdef POINTERS_EXTEND_UNSIGNED > > + || (mode == Pmode && mem_mode != VOIDmode) > > +#endif > > + ) > > && GET_MODE_SIZE (GET_MODE (SUBREG_REG (rtl))) <= DWARF2_ADDR_SIZE) > > { > > mem_loc_result = mem_loc_descriptor (SUBREG_REG (rtl), > > > > PING.
Can you please explain how do you get such a SUBREG in a MEM address? Jakub