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