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.