Hi,
I was hit by an ICE in reload. You know how  difficult to debug it ☺.

My primary suspect is that eliminate_regs_in_insn transforms 


(insn 680 679 681 84 src/weighted_prediction.c:729 (set (reg:DF 1 r1)
        (mem:DF (plus:SI (mult:SI (reg:SI 596 [ ivtmp.474 ])
                    (const_int 8 [0x8]))
                (reg/f:SI 1105)) [3 S8 A8])) 448 {*ldl_dfmode} (nil))
                

To:                 
 (insn 680 679 681 84 src/weighted_prediction.c:729 (set (reg:DF 1 r1)
        (mem:DF (plus:SI (plus:SI (mult:SI (reg:SI 596 [ ivtmp.474 ])
                                     (const_int 8 [0x8]))
                                  (reg/f:SI 57 r57))
                (const_int 40 [0x28])) [3 S8 A8])) 448 {*ldl_dfmode} (nil))     
 

The latter has illegal memory address mode, and r57 is our stack pointer.

Since reload part is still half mystery to me, I wonder whether this is an 
wrong transformation and causes the following ICE. Is it allowed that
Eliminate_regs_in_insn to generate such illegal instruction?

Cheers,
Bingfeng Mei

Reply via email to