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

Reply via email to