fearyourself wrote: > In the instruction set of my architecture, the offsets of a half-load > (HImode) have to be multiples of 2. However, if I set up a structure > in a certain way, the compiler will generate: > > (mem/s/j:HI (plus:DI (reg:DI 134 [ ivtmp.23 ]) > (const_int 1 [0x1])) [0 <variable>.geno+0 S2 A16]) > > As the memory operand for the load. > > Now, one solution I am going to try to fix this is to use > define_expand and add a move into another register before this load > and then load from that register (thus removing the offset of 1). > > My question is: Is that how it should be done or is there another solution?
This looks like what you need: -- Macro: STRICT_ALIGNMENT Define this macro to be the value 1 if instructions will fail to work if given data not on the nominal alignment. If instructions will merely go slower in that case, define this macro as 0. cheers, DaveK