[Bug lto/40409] [LTO] ICE in expand_shift, at expmed.c:2263, -O0 vs -Ox misses tree lowering phases
rguenth at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Fri Dec 11 16:40:00 GMT 2009
------- Comment #12 from rguenth at gcc dot gnu dot org 2009-12-11 16:40 -------
I can confirm the ICE from comment #8 still is present on i?86-linux.
#1 0x0820c740 in expand_mult (mode=XCmode, op0=0x0, op1=0xb77d3ba0,
target=0xb77d3b7c, unsignedp=0)
at /home/richard/src/trunk/gcc/expmed.c:3253
3253 gcc_assert (op0);
which is because expand_binop seems to fail.
3246 /* This used to use umul_optab if unsigned, but for non-widening
multiply
3247 there is no difference between signed and unsigned. */
(gdb) l
3248 op0 = expand_binop (mode,
3249 ! unsignedp
3250 && flag_trapv && (GET_MODE_CLASS(mode) ==
MODE_INT)
3251 ? smulv_optab : smul_optab,
3252 op0, op1, target, unsignedp, OPTAB_LIB_WIDEN);
3253 gcc_assert (op0);
expand_binop (mode=XCmode, binoptab=0x8c72de0, op0=0xb77d3b88, op1=0xb77d3ba0,
target=0xb77d3b7c, unsignedp=0, methods=OPTAB_LIB_WIDEN)
at /home/richard/src/trunk/gcc/optabs.c:1552
(gdb) call debug_rtx (op0)
(mem/s/c:XC (plus:SI (reg/f:SI 54 virtual-stack-vars)
(const_int -32 [0xffffffe0])) [0 w+0 S24 A32])
(gdb) call debug_rtx (op1)
(mem/s/c:XC (plus:SI (reg/f:SI 54 virtual-stack-vars)
(const_int -64 [0xffffffc0])) [0 z+0 S24 A32])
(gdb) call debug_rtx (target)
(concat:XC (reg:XF 80 [ D.2040 ])
(reg:XF 81 [ D.2040+12 ]))
the optab expansion fails because there is no optab_libfunc for
smul_optab and XCmode or TCmode.
We arrive here because at -O1 we lower complex operations after writing
LTO IL and at -O0 we do so before. So if you combine that we never
lower complex operations properly.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |NEW
Last reconfirmed|2009-09-17 09:44:37 |2009-12-11 16:40:07
date| |
Summary|[LTO] ICE in expand_shift, |[LTO] ICE in expand_shift,
|at expmed.c:2263 |at expmed.c:2263, -O0 vs -Ox
| |misses tree lowering phases
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40409
More information about the Gcc-bugs
mailing list