Re: Invalid reload inheritance with paradoxical subregs

2009-04-06 Thread Hans-Peter Nilsson
On Mon, 6 Apr 2009, Uros Bizjak wrote: > Hans-Peter Nilsson wrote: > > And again, I'd be perfectly fine with removing this weird > > LOAD_EXTEND_OP-specific "feature". I'm of half a mind to remove > > the #define from the MMIX port. > Please note, that my findings were on 4.3.4 to-be-released bran

Re: Invalid reload inheritance with paradoxical subregs

2009-04-06 Thread Uros Bizjak
Hans-Peter Nilsson wrote: On Thu, 2 Apr 2009, Uros Bizjak wrote: Combine simplifies lshiftrt/shift/and combined instruction under the assumption, that for ZERO_EXTEND LOAD_EXTEND_OP targets it can prove that certain bits are zero, so AND operation can be omitted. The resulting instruction is

Re: Invalid reload inheritance with paradoxical subregs

2009-04-06 Thread Hans-Peter Nilsson
On Thu, 2 Apr 2009, Uros Bizjak wrote: > Combine simplifies lshiftrt/shift/and combined instruction under the > assumption, that for ZERO_EXTEND LOAD_EXTEND_OP targets it can prove > that certain bits are zero, so AND operation can be omitted. The > resulting instruction is valid only for memory op

Re: Invalid reload inheritance with paradoxical subregs

2009-04-02 Thread Joern Rennecke
On Thu, Apr 02, 2009 at 12:51:55PM +0200, Uros Bizjak wrote: > I guess that somehow we have to prevent choose_reload_regs to blindly > substitute memory_operand with register when paradoxical subregs are > involved. The condition for the substitution should be similar to the > condition in nonzero_

Re: Invalid reload inheritance with paradoxical subregs

2009-04-02 Thread Uros Bizjak
On Wed, Apr 1, 2009 at 3:34 PM, Joern Rennecke wrote: > I suggest you first find out more what is exactly reloaded and where > the inheritance occurs - inheritance can be done by choose_reload_regs > or later in emit_reload_insns and its subfunctions. > > I.e. set a breakpoint on find_reloads and

Re: Invalid reload inheritance with paradoxical subregs

2009-04-01 Thread Joern Rennecke
I suggest you first find out more what is exactly reloaded and where the inheritance occurs - inheritance can be done by choose_reload_regs or later in emit_reload_insns and its subfunctions. I.e. set a breakpoint on find_reloads and make it conditional on insn->u.fld[0].rt_int == 121 && replace ,