This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH RFC: My version of the lower-subreg patch


Rask Ingemann Lambertsen <rask@sygehus.dk> writes:

> On Fri, Dec 29, 2006 at 08:47:13PM -0800, Ian Lance Taylor wrote:
> > Rask Ingemann Lambertsen <rask@sygehus.dk> writes:
> > 
> > >    So the change is rejected, which trips the assert. I solved it by
> > > reordering the two movhi variants. Other targets might run into the same
> > > issue.
> > 
> > Interesting issue.  I think most targets will handle this just by
> > using alternatives, though I understand that won't work for you
> > because of the additional CLOBBER.
> 
>    The CLOBBER version is only meant for use by a peephole2 pattern. This is
> the first time - that I know of - it has been matched by an earlier pass.
> 
>    As it turns out, the i386 back end has similiar insn patterns in the same
> order that I did:
> 
> (define_insn "*movsi_xor"
>   [(set (match_operand:SI 0 "register_operand" "=r")
>         (match_operand:SI 1 "const0_operand" "i"))
>    (clobber (reg:CC FLAGS_REG))]
>   "reload_completed && ...
> 
> (define_insn "*movsi_1"
>   [(set (match_operand:SI 0 "nonimmediate_operand" "=...")
>         (match_operand:SI 1 "general_operand" "...")
>   "!(MEM_P (operands[0]) && MEM_P (operands[1]))"
> 
>    But here, the CLOBBERS versions (at 32-bits, there's also one for -1) are
> guarded by reload_completed and subreg passes run before reload.

Yeah, a check on reload_completed is the usual way to prevent these
sorts of insn patterns from being matched.

Ian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]