[Bug target/68959] Test case ICEs with -mlra -mvsx-timode
bergner at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Dec 17 15:07:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68959
--- Comment #1 from Peter Bergner <bergner at gcc dot gnu.org> ---
Simpler test case??? Anyway, it fails too.
typedef union { _Decimal128 a; } u_t;
extern u_t fn1 (void);
extern void fn2 (u_t);
void
foo (void)
{
fn2 (fn1 ());
}
Before LRA, we have:
(call_insn 5 2 6 2 (parallel [
(set (parallel:TI [
(expr_list:REG_DEP_TRUE (reg:TD 34 2)
(const_int 0 [0]))
])
(call (mem:SI (symbol_ref:DI ("fn1") [flags 0x41]
<function_decl 0x3fffb568d580 fn1>) [0 fn1 S4 A8])
(const_int 0 [0])))
(clobber (reg:DI 65 lr))
]) foo.i:7 636 {*call_value_nonlocal_aixdi}
(nil)
(expr_list (use (reg:DI 2 2))
(nil)))
(insn 6 5 7 2 (set (reg:TD 156)
(reg:TD 34 2)) foo.i:7 450 {*movtd_64bit_nodm}
(expr_list:REG_DEAD (reg:TD 34 2)
(nil)))
(insn 7 6 8 2 (set (reg:TI 155 [ D.2361 ])
(subreg:TI (reg:TD 156) 0)) foo.i:7 937 {*vsx_movti_64bit}
(expr_list:REG_DEAD (reg:TD 156)
(nil)))
(insn 8 7 9 2 (set (reg:TI 157)
(reg:TI 155 [ D.2361 ])) foo.i:7 937 {*vsx_movti_64bit}
(expr_list:REG_DEAD (reg:TI 155 [ D.2361 ])
(nil)))
(insn 9 8 10 2 (set (reg:TD 158)
(subreg:TD (reg:TI 157) 0)) foo.i:7 450 {*movtd_64bit_nodm}
(expr_list:REG_DEAD (reg:TI 157)
(nil)))
(insn 10 9 11 2 (set (reg:TD 34 2)
(reg:TD 158)) foo.i:7 450 {*movtd_64bit_nodm}
(expr_list:REG_DEAD (reg:TD 158)
(nil)))
(call_insn 11 10 14 2 (parallel [
(call (mem:SI (symbol_ref:DI ("fn2") [flags 0x41] <function_decl
0x3fffb568d660 fn2>) [0 fn2 S4 A8])
(const_int 0 [0]))
(clobber (reg:DI 65 lr))
]) foo.i:7 635 {*call_nonlocal_aixdi}
(expr_list:REG_DEAD (reg:DI 2 2)
(expr_list:REG_DEAD (reg:TD 34 2)
(nil)))
(expr_list (use (reg:DI 2 2))
(expr_list (use (reg:TD 34 2))
(nil))))
(insn 14 11 0 2 (unspec [
(const_int 0 [0])
] UNSPEC_NOP) foo.i:8 697 {nop}
(nil))
After the ICE in LRA, we have:
(call_insn 5 2 6 2 (parallel [
(set (parallel:TI [
(expr_list:REG_DEP_TRUE (reg:TD 34 2)
(const_int 0 [0]))
])
(call (mem:SI (symbol_ref:DI ("fn1") [flags 0x41]
<function_decl 0x3fffb568d580 fn1>) [0 fn1 S4 A8])
(const_int 0 [0])))
(clobber (reg:DI 65 lr))
]) foo.i:7 636 {*call_value_nonlocal_aixdi}
(expr_list:REG_UNUSED (reg:DI 65 lr)
(nil))
(expr_list (use (reg:DI 2 2))
(nil)))
(insn 6 5 18 2 (set (mem/c:TD (plus:DI (reg/f:DI 113 sfp)
(const_int 32 [0x20])) [1 %sfp+32 S16 A128])
(reg:TD 34 2)) foo.i:7 450 {*movtd_64bit_nodm}
(expr_list:REG_DEAD (reg:TI 35 3)
(expr_list:REG_DEAD (reg:TD 34 2)
(nil))))
(insn 18 6 20 2 (set (reg:DI 162)
(plus:DI (reg/f:DI 113 sfp)
(const_int 32 [0x20]))) foo.i:7 81 {*adddi3}
(nil))
(insn 20 18 19 2 (set (reg:DI 163 [162])
(reg:DI 162)) foo.i:7 540 {*movdi_internal64}
(nil))
(insn 19 20 21 2 (set (reg:TD 164 [161])
(mem/c:TD (reg:DI 163 [162]) [1 %sfp+32 S16 A128])) foo.i:7 450
{*movtd_64bit_nodm}
(nil))
(insn 21 19 22 2 (set (reg:TD 165 [161])
(reg:TD 164 [161])) foo.i:7 450 {*movtd_64bit_nodm}
(nil))
(insn 22 21 23 2 (set (reg:TD 166 [161])
(reg:TD 165 [161])) foo.i:7 450 {*movtd_64bit_nodm}
(nil))
(insn 23 22 24 2 (set (reg:TD 167 [161])
(reg:TD 166 [161])) foo.i:7 450 {*movtd_64bit_nodm}
(nil))
(insn 24 23 25 2 (set (reg:TD 168 [161])
(reg:TD 167 [161])) foo.i:7 450 {*movtd_64bit_nodm}
(nil))
....
More information about the Gcc-bugs
mailing list