[Bug target/17428] [4.0 Regression] internal compiler error: in spill_failure, at reload1.c:1880

rakdver at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Tue Sep 21 11:49:00 GMT 2004


------- Additional Comments From rakdver at gcc dot gnu dot org  2004-09-21 11:49 -------
This is caused by speculative prefetching.  The problem is in code like this:

(insn 14 12 15 1 (set (reg:SI 1 dx)
        (const_int 0 [0x0])) -1 (nil)
    (nil))

(insn 15 14 16 1 (set (reg:SI 0 ax)
        (mem/s:SI (reg/f:SI 62 [ ivtmp.5 ]) [2 a S4 A8])) -1 (nil)
    (nil))

(call_insn 16 15 17 1 (call (mem:QI (symbol_ref:SI ("foo") [flags 0x3]
<function_decl 0x40206ae0 foo>) [0 S1 A8])
        (const_int 0 [0x0])) -1 (nil)
    (expr_list:REG_EH_REGION (const_int 0 [0x0])
        (nil))
    (expr_list (use (reg:SI 0 ax))
        (expr_list (use (reg:SI 1 dx))
            (nil))))

Now we issue a profiling code for mem in insn 15.  This causes life range
of dx to be prolonged, and ICE follows.

safe_insert_insn_on_edge needs to be extended to handle this, somehow.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17428



More information about the Gcc-bugs mailing list