https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114753
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
#0 expand_binop (mode=E_DImode, binoptab=smulv_optab, op0=0x7ffff71b53f0,
op1=0x7ffff71b85a0, target=0x0, unsignedp=0, methods=OPTAB_LIB_WIDEN)
at /space/rguenther/src/gcc/gcc/optabs.cc:1497
#1 0x000000000116edf5 in expand_mult (mode=E_DImode, op0=0x7ffff71b53f0,
op1=0x7ffff71b85a0, target=0x0, unsignedp=0, no_libcall=false)
at /space/rguenther/src/gcc/gcc/expmed.cc:3610
#2 0x00000000011a38e0 in expand_expr_real_2 (ops=0x7fffffffcef0, target=0x0,
tmode=E_DImode, modifier=EXPAND_NORMAL)
at /space/rguenther/src/gcc/gcc/expr.cc:10275
#3 0x0000000001359608 in expand_mul_overflow (loc=2147483653,
lhs=<ssa_name 0x7ffff7016ee8 6>, arg0=<nop_expr 0x7ffff7181aa0>,
arg1=<nop_expr 0x7ffff7181a80>, unsr_p=false, uns0_p=false, uns1_p=true,
is_ubsan=false, datap=0x0)
at /space/rguenther/src/gcc/gcc/internal-fn.cc:2359
#4 0x000000000135b7f7 in expand_arith_overflow (code=MULT_EXPR,
stmt=<gimple_call 0x7ffff7019f30>)
at /space/rguenther/src/gcc/gcc/internal-fn.cc:2827
#5 0x000000000135b9c3 in expand_MUL_OVERFLOW (stmt=0x7ffff7019f30)
at /space/rguenther/src/gcc/gcc/internal-fn.cc:2876
so a hack would be to reset flag_trapv around
2354 For unsigned multiplication when high parts are both
non-zero
2355 this overflows always. */
2356 ops.code = MULT_EXPR;
2357 ops.op0 = make_tree (type, op0);
2358 ops.op1 = make_tree (type, op1);
2359 tem = expand_expr_real_2 (&ops, NULL_RTX, mode,
EXPAND_NORMAL);
in expand_mul_overflow.