+2007-03-26 Ian Lance Taylor <iant@google.com>
+
+ PR tree-optimization/31345
+ * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
+ [+INF, +INF(OVF)] into VARYING.
+
2007-03-26 Zack Weinberg <zackw@panix.com>
* gengtype-parse.c: New file.
+2007-03-26 Ian Lance Taylor <iant@google.com>
+
+ PR tree-optimization/31345
+ * gcc.c-torture/compile/pr31345-1.c: New test.
+
2007-03-26 Brooks Moses <brooks.moses@codesourcery.com>
* gfortran.dg/func_derived_4.f90: Fix module cleanup.
--- /dev/null
+/* PR tree-optimization/31345
+ This caused a crash in VRP when dealing with overflow infinities. */
+
+void
+dpsnaffle (const char *kbuf)
+{
+ int hash, thash, head[2], off;
+ {
+ int _DP_i;
+ (hash) = 19780211;
+ {
+ (hash) = (hash) + (kbuf)[_DP_i];
+ }
+ (hash) = ((hash) * 43321879) & 0x7FFFFFFF;
+ }
+ while (off != 0)
+ {
+ if (hash > thash) {}
+ else if (hash < thash)
+ {
+ off = head[2];
+ }
+ }
+}
return;
}
+ /* We punt if:
+ 1) [-INF, +INF]
+ 2) [-INF, +-INF(OVF)]
+ 3) [+-INF(OVF), +INF]
+ 4) [+-INF(OVF), +-INF(OVF)]
+ We learn nothing when we have INF and INF(OVF) on both sides.
+ Note that we do accept [-INF, -INF] and [+INF, +INF] without
+ overflow. */
if ((min == TYPE_MIN_VALUE (TREE_TYPE (min))
- || is_negative_overflow_infinity (min))
+ || is_overflow_infinity (min))
&& (max == TYPE_MAX_VALUE (TREE_TYPE (max))
- || is_positive_overflow_infinity (max)))
+ || is_overflow_infinity (max)))
{
set_value_range_to_varying (vr);
return;