+2016-12-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/78788
+ * tree-vrp.c (set_value_range): Allow [-INF(OVF), +INF(OVF)].
+ (set_and_canonicalize_value_range): Do not drop the above to
+ VARYING.
+
2016-12-13 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs600.c (rs6000_builtin_vectorization_cost):
+2016-12-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/78788
+ * gcc.dg/torture/pr78788.c: New testcase.
+
2016-12-13 Nathan Sidwell <nathan@acm.org>
PR c++/69481
cmp = compare_values (min, max);
gcc_assert (cmp == 0 || cmp == -1 || cmp == -2);
-
- if (needs_overflow_infinity (TREE_TYPE (min)))
- gcc_assert (!is_overflow_infinity (min)
- || !is_overflow_infinity (max));
}
if (flag_checking
}
}
- /* Drop [-INF(OVF), +INF(OVF)] to varying. */
- if (needs_overflow_infinity (TREE_TYPE (min))
- && is_overflow_infinity (min)
- && is_overflow_infinity (max))
- {
- set_value_range_to_varying (vr);
- return;
- }
+ /* Do not drop [-INF(OVF), +INF(OVF)] to varying. (OVF) has to be sticky
+ to make sure VRP iteration terminates, otherwise we can get into
+ oscillations. */
set_value_range (vr, t, min, max, equiv);
}