Dear all, I have this weird issue that I can't really understand:
In my architecture I do not have a store immediate into memory, I have to go through a register. However, the compiler is currently propagating constants into the stores. So for example: (insn 44 43 45 4 st3.c:21 (set (reg:DI 119) (const_int 1 [0x1])) -1 (nil)) (insn 45 44 46 4 st3.c:21 (set (mem/s:DI (reg:DI 109 [ ivtmp.43 ]) [2 data S8 A64]) (reg:DI 119)) -1 (nil)) is transformed into : (insn 46 44 48 3 st3.c:22 (set (mem/s:DI (reg:DI 109 [ ivtmp.43 ]) [2 data S8 A64]) (const_int 1 [0x1])) 72 {movdi_internal1} (expr_list:REG_EQUAL (const_int 1 [0x1]) (nil))) I tracked it down to the gcse pass. However, I thought I had turned this off in the definition of a movdi in my machine description. But apparently this is not sufficient, any ideas? As always, thanks for your time, Jean Christophe Beyler