------- Comment #15 from rguenth at gcc dot gnu dot org 2007-03-15 21:06 ------- Did you try reverting the last hunk:
@@ -1816,7 +1833,8 @@ the new range. */ /* Divisions by zero result in a VARYING value. */ - if (code != MULT_EXPR + if ((code != MULT_EXPR + && code != RSHIFT_EXPR) && (vr0.type == VR_ANTI_RANGE || range_includes_zero_p (&vr1))) { set_value_range_to_varying (vr); that should be the only one that increases the amount of optimization done. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31169