diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2018-01-04 19:13:55 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2018-01-04 19:13:55 +0000 |
commit | 1e678f69f7dc995a55d2cf0b4a10ffce88c0f776 (patch) | |
tree | f8dd5a96b205ed25febcde0f5b42ffbbf44a7a00 /gcc | |
parent | 682820ccf9880204310cef67a7bfb2f9923bb702 (diff) | |
download | gcc-1e678f69f7dc995a55d2cf0b4a10ffce88c0f776.zip gcc-1e678f69f7dc995a55d2cf0b4a10ffce88c0f776.tar.gz gcc-1e678f69f7dc995a55d2cf0b4a10ffce88c0f776.tar.bz2 |
Protect second call to extract_range_from_multiplicative_op_1
Following on from:
* tree-vrp.c (extract_range_from_multiplicative_op_1): Assert
for VR_RANGE only; don't allow VR_ANTI_RANGE.
(extract_range_from_binary_expr_1): Don't call
extract_range_from_multiplicative_op_1 if !range_int_cst_p.
there was a later call to extract_range_from_multiplicative_op_1 too,
that used a negative test for a symbolic (!is_gimple_min_invariant)
range rather than a positive test for an integer range.
2017-11-04 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* tree-vrp.c (extract_range_from_binary_expr_1): Check
range_int_cst_p rather than !symbolic_range_p before calling
extract_range_from_multiplicative_op_1.
From-SVN: r256262
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 26d9210..b981ff4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-01-04 Richard Sandiford <richard.sandiford@linaro.org> + + * tree-vrp.c (extract_range_from_binary_expr_1): Check + range_int_cst_p rather than !symbolic_range_p before calling + extract_range_from_multiplicative_op_1. + 2017-01-04 Jeff Law <law@redhat.com> * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index e6f04bb..69762ab 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -2042,7 +2042,7 @@ extract_range_from_binary_expr_1 (value_range *vr, return; } } - else if (!symbolic_range_p (&vr0) && !symbolic_range_p (&vr1)) + else if (range_int_cst_p (&vr0) && range_int_cst_p (&vr1)) { extract_range_from_multiplicative_op_1 (vr, code, &vr0, &vr1); return; |