Jean Christophe Beyler wrote:
> Dear all,
> 
> I've moved forward on this issue. Again, the problem is not that the
> data is not aligned but that the compiler tries to generate this
> instruction:
> 
> (set (reg:HI 141) (mem/s/j:HI (plus:DI (reg:DI 134 [ ivtmp.23 ])
>          (const_int 1 [0x1])) [0 <variable>.geno+0 S2 A16]))
> 
> And, in my target architecture, this is not authorized. I want to
> transform this into:
> 
> (set (reg:DI 135) (plus:DI (reg:DI 134 [ ivtmp.23 ])
>          (const_int 1 [0x1])) [0 <variable>.geno+0 S2 A16]))
> (set (reg:HI 141) (mem/s/j:HI (reg:DI 135))
> 
> 
> I've tried playing with define_expand, I can detect this problem, I
> can emit my first move and then the second but for some reason, the
> compiler reassembles them back together.
> 
> Any ideas why I am getting that? Am I doing anything wrong? After I
> expand this, I use the DONE macro...


  How about forbidding the form you don't allow in GO_IF_LEGITIMATE_ADDRESS?

    cheers,
      DaveK

Reply via email to