This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/78788] [7 Regression] ICE (segfault) on s390x-linux-gnu
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 13 Dec 2016 11:37:24 +0000
- Subject: [Bug tree-optimization/78788] [7 Regression] ICE (segfault) on s390x-linux-gnu
- Auto-submitted: auto-generated
- References: <bug-78788-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78788
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Index: gcc/tree-vrp.c
===================================================================
--- gcc/tree-vrp.c (revision 243599)
+++ gcc/tree-vrp.c (working copy)
@@ -365,10 +365,6 @@ set_value_range (value_range *vr, enum v
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
@@ -506,14 +502,9 @@ set_and_canonicalize_value_range (value_
}
}
- /* 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);
}