aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-06-14 07:22:04 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-06-14 07:22:04 +0000
commit90b72e84c427d4e735ae98dc06fe84fc1ec8139b (patch)
treead08ab03d531f17d0180aa5adf94b8ff4dcb4681 /gcc/tree-vrp.c
parent3db5773f7083637c9adb2481d35389495309bc05 (diff)
downloadgcc-90b72e84c427d4e735ae98dc06fe84fc1ec8139b.zip
gcc-90b72e84c427d4e735ae98dc06fe84fc1ec8139b.tar.gz
gcc-90b72e84c427d4e735ae98dc06fe84fc1ec8139b.tar.bz2
re PR tree-optimization/71521 (Regression in GCC-7.0.0's optimizer)
2016-06-14 Richard Biener <rguenther@suse.de> PR tree-optimization/71521 * tree-vrp.c (extract_range_from_binary_expr_1): Guard division int_const_binop against zero divisor. * gcc.dg/tree-ssa/vrp101.c: New testcase. From-SVN: r237425
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r--gcc/tree-vrp.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 68f2e90..ecfab1f 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -2938,7 +2938,8 @@ extract_range_from_binary_expr_1 (value_range *vr,
and divisor are available. */
if (vr1.type == VR_RANGE
&& !symbolic_range_p (&vr0)
- && !symbolic_range_p (&vr1))
+ && !symbolic_range_p (&vr1)
+ && compare_values (vr1.max, zero) != 0)
min = int_const_binop (code, vr0.min, vr1.max);
else
min = zero;