On Thu, Sep 03, 2015 at 11:19:43PM -0700, David Miller wrote:
> From: Segher Boessenkool <seg...@kernel.crashing.org>
> Date: Thu, 3 Sep 2015 20:26:51 -0500
> 
> > On Thu, Sep 03, 2015 at 03:33:56PM -0700, David Miller wrote:
> >> (insn 18631 1099 1100 14 (set (reg:SI 13423)
> >>         (subreg:SI (mem/c:QI (plus:SI (reg/f:SI 101 %sfp)
> >>                     (const_int -14269 [0xffffffffffffc843])) [0 
> >> %sfp+-14269 S1 A8]) 0)) x.c:104 63 {*movsi_insn}
> >>      (expr_list:REG_DEAD (reg:QI 287)
> >>         (nil)))
> > 
> >> I wonder why another target's LRA conversion hasn't hit this :-)
> > 
> > Maybe a stupid question but... why are you seeing subregs of mem at all?
> > Does sparc not have INSN_SCHEDULING defined?
> 
> The paradoxical subreg restriction in general_operand() is only
> enforced when reload_completed is true, which will not be the
> case while LRA is working.

This one?

#ifdef INSN_SCHEDULING
      /* On machines that have insn scheduling, we want all memory
         reference to be explicit, so outlaw paradoxical SUBREGs.
         However, we must allow them after reload so that they can
         get cleaned up by cleanup_subreg_operands.  */
      if (!reload_completed && MEM_P (sub)
          && GET_MODE_SIZE (mode) > GET_MODE_SIZE (GET_MODE (sub)))
        return 0;
#endif

I think you misread that.  Also doc/rtl.texi makes pretty clear that
you really shouldn't see subregs of mem.  So where does it come from?


Segher

Reply via email to