https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114985
--- Comment #25 from Aldy Hernandez <aldyh at gcc dot gnu.org> --- prange has been enabled again, after testing on x86-64 and ppc64le linux. Aarch has no space to run tests on the compile farm, and sparc bootstrap was already broken. The problem in this PR can be triggered by commenting the two new operand_check_p conditionals: diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc index 09cab761822..76548f31853 100644 --- a/gcc/ipa-cp.cc +++ b/gcc/ipa-cp.cc @@ -1744,7 +1744,7 @@ ipa_value_range_from_jfunc (vrange &vr, pointer type to hold the result instead of a boolean type. Avoid trapping in the sanity check in fold_range until this is fixed. */ - || !handler.operand_check_p (vr_type, srcvr.type (), op_vr.type ()) + /*|| !handler.operand_check_p (vr_type, srcvr.type (), op_vr.type ())*/ || !handler.fold_range (op_res, vr_type, srcvr, op_vr)) op_res.set_varying (vr_type); @@ -2556,9 +2556,11 @@ propagate_vr_across_jump_function (cgraph_edge *cs, ipa_jump_func *jfunc, pointer type to hold the result instead of a boolean type. Avoid trapping in the sanity check in fold_range until this is fixed. */ + /* || !handler.operand_check_p (operand_type, src_lats->m_value_range.m_vr.type (), op_vr.type ()) + */ || !handler.fold_range (op_res, operand_type, src_lats->m_value_range.m_vr, op_vr)) op_res.set_varying (param_type); You can reproduce on x86-64 as well as ppc64le, and the problem can be seen with and without prange support enabled.