[Bug target/59652] [4.8 Regression] ICE: in reload_cse_simplify_operands, at postreload.c:411

danglin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jan 7 02:56:00 GMT 2014


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

--- Comment #6 from John David Anglin <danglin at gcc dot gnu.org> ---
The fundamental issue is how these insns are reloaded:

(insn 223 222 224 7 (set (reg/f:SI 2448)        (high:SI (symbol_ref:SI
("resource") [flags 0x200]  <var_decl 0x40579660
 resource>))) ../../../texk/xdvik/xdvi.c:2968 52 {*pa.md:2686}
     (expr_list:REG_EQUIV (high:SI (symbol_ref:SI ("resource") [flags 0x200] 
<v
ar_decl 0x40579660 resource>))
        (nil)))
(insn 224 223 226 7 (set (reg/f:SI 2442)
        (lo_sum:SI (reg/f:SI 2448)
            (symbol_ref:SI ("resource") [flags 0x200]  <var_decl 0x40579660
resource>))) ../../../texk/xdvik/xdvi.c:2968 55 {*pa.md:2766}
     (expr_list:REG_EQUIV (symbol_ref:SI ("resource") [flags 0x200]  <var_decl
0x40579660 resource>)
        (nil)))
(insn 226 224 227 7 (set (reg:SI 936 [ resource.unique+-3 ])
        (zero_extend:SI (mem/c:QI (plus:SI (reg/f:SI 2442)
                    (const_int 201 [0xc9])) [0 resource.unique+0 S1 A8])))
../../../texk/xdvik/xdvi.c:2968 84 {*pa.md:4628}
     (nil))

Insn 224 ends up being deleted.  I'm not sure why because reg/f:SI 2442
appears to be needed in insn 226 and later insns.  What happens is reload
does an input reload for insn 226, but gets in trouble later.

The best fix that I have at the moment is to inhibit generation of REG+D
instructions prior to reload.



More information about the Gcc-bugs mailing list