aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-vrp.c6
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 80803d6..3861e66 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2017-09-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * tree-vrp.c (extract_range_from_binary_expr_1): Check
+ int_cst_rangeN before calling value_range_constant_singleton (&vrN).
+
2017-09-21 Richard Biener <rguenther@suse.de>
PR tree-optimization/71351
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 221a07b..1d45851 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -2930,9 +2930,11 @@ extract_range_from_binary_expr_1 (value_range *vr,
= wi::set_bit_in_zero (TYPE_PRECISION (expr_type) - 1,
TYPE_PRECISION (expr_type));
if (!TYPE_UNSIGNED (expr_type)
- && ((value_range_constant_singleton (&vr0)
+ && ((int_cst_range0
+ && value_range_constant_singleton (&vr0)
&& !wi::cmps (vr0.min, sign_bit))
- || (value_range_constant_singleton (&vr1)
+ || (int_cst_range1
+ && value_range_constant_singleton (&vr1)
&& !wi::cmps (vr1.min, sign_bit))))
{
min = TYPE_MIN_VALUE (expr_type);