https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88011
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> --- Thanks for the testcase! --- a/test.go.115t.dom2 2018-11-16 10:45:27.663896672 +0100 +++ b/test.go.115t.dom2 2018-11-16 10:46:47.945357195 +0100 @@ -13937,7 +13937,7 @@ LKUP STMT _27 = aWord_58 trunc_div_expr bWord_60 2>>> STMT _27 = aWord_58 trunc_div_expr bWord_60 0>>> COPY iftmp.324_13 = _27 -pushing new range for iftmp.324_13: [0, +INF] +pushing new range for iftmp.324_13: UNDEFINED LKUP STMT bWord_60 eq_expr 18446744073709551615 FIND: 0 <<<< COPY iftmp.324_13 = _27 that's where things start to differ. Doh. Simple mass-change error: @@ -1882,7 +1873,7 @@ extract_range_from_binary_expr_1 (value_ TYPE_OVERFLOW_UNDEFINED (expr_type), extra_range_p, extra_min, extra_max)) { - set_value_range_to_varying (vr); + vr->set_undefined (); return; } set_value_range (vr, VR_RANGE,