Hi, I am doing a port for a 32bit target in GCC 4.4.0. The target does not have support for symbolic address in QImode for load operations. In order to do this what i have done is in define_expand for moveqi reject symbolic address it they come in source operands and i have also written a predicate for *moveqi_internal to reject such cases. But i get the following ICE:
insn does not satisfy its constraints: (insn 24 5 6 2 ice4.c:4 (set (reg:QI 17 r1) (mem/c/i:QI (symbol_ref:SI ("s") [flags 0x2] <var_decl 0xb7bfd000 s>) [0 s+0 S1 A32])) 0 {*movqi_internal} (nil)) >From ice4.c.172r.ira (insn 24 5 6 2 ice4.c:4 (set (reg:QI 17 r1) (mem/c/i:QI (symbol_ref:SI ("s") [flags 0x2] <var_decl 0xb7bfd000 s>) [0 s+0 S1 A32])) 0 {*movqi_internal} (nil)) (insn 6 24 7 2 ice4.c:4 (set (reg:QI 16 r0 [62]) (plus:QI (reg:QI 17 r1) (const_int -100 [0xffffff9c]))) 16 {addqi3} (nil)) >From ice4.c.168r.asmcons (insn 5 2 6 2 ice4.c:4 (set (reg:SI 61 [ s ]) (mem/c/i:SI (symbol_ref:SI ("s") [flags 0x2] <var_decl 0xb7bfd000 s>) [0 s+0 S4 A32])) 2 {*movsi_internal} (nil)) (insn 6 5 7 2 ice4.c:4 (set (reg:QI 62) (plus:QI (subreg:QI (reg:SI 61 [ s ]) 0) (const_int -100 [0xffffff9c]))) 16 {addqi3} (expr_list:REG_DEAD (reg:SI 61 [ s ]) (nil))) How can i prevent this ICE ? Regards, Shafi