aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-07-25 12:05:19 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-07-25 12:05:19 +0000
commite2cfa983c31fa7886f496a47feb8714297ca0063 (patch)
tree8420353f6db2827ae4b9113bfca65049e5b004ad
parentc9357dc13bdc10df1eba95d7b79ee2d3ae4fbbc6 (diff)
downloadgcc-e2cfa983c31fa7886f496a47feb8714297ca0063.zip
gcc-e2cfa983c31fa7886f496a47feb8714297ca0063.tar.gz
gcc-e2cfa983c31fa7886f496a47feb8714297ca0063.tar.bz2
tree-vrp.c (extract_range_from_multiplicative_op): Add type parameter and use it instead of guessing expression type from the...
2019-07-25 Richard Biener <rguenther@suse.de> * tree-vrp.c (extract_range_from_multiplicative_op): Add type parameter and use it instead of guessing expression type from the first operand. (extract_range_from_binary_expr): Pass expr_type down. From-SVN: r273797
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-vrp.c8
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 05c8263..87a4ecd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2019-07-25 Richard Biener <rguenther@suse.de>
+
+ * tree-vrp.c (extract_range_from_multiplicative_op): Add
+ type parameter and use it instead of guessing expression
+ type from the first operand.
+ (extract_range_from_binary_expr): Pass expr_type down.
+
2019-07-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm.md (SATrev): Change to code attribute.
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index add6ad5..9ba6f80 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -1238,7 +1238,7 @@ extract_range_into_wide_ints (const value_range_base *vr,
static void
extract_range_from_multiplicative_op (value_range_base *vr,
- enum tree_code code,
+ enum tree_code code, tree type,
const value_range_base *vr0,
const value_range_base *vr1)
{
@@ -1253,7 +1253,6 @@ extract_range_from_multiplicative_op (value_range_base *vr,
gcc_assert (vr0->kind () == VR_RANGE
&& vr0->kind () == vr1->kind ());
- tree type = vr0->type ();
wide_int res_lb, res_ub;
wide_int vr0_lb = wi::to_wide (vr0->min ());
wide_int vr0_ub = wi::to_wide (vr0->max ());
@@ -1785,7 +1784,7 @@ extract_range_from_binary_expr (value_range_base *vr,
vr->set_varying ();
return;
}
- extract_range_from_multiplicative_op (vr, code, &vr0, &vr1);
+ extract_range_from_multiplicative_op (vr, code, expr_type, &vr0, &vr1);
return;
}
else if (code == RSHIFT_EXPR
@@ -1806,7 +1805,8 @@ extract_range_from_binary_expr (value_range_base *vr,
if (vr0.kind () != VR_RANGE || vr0.symbolic_p ())
vr0.set (VR_RANGE, vrp_val_min (expr_type),
vrp_val_max (expr_type));
- extract_range_from_multiplicative_op (vr, code, &vr0, &vr1);
+ extract_range_from_multiplicative_op (vr, code, expr_type,
+ &vr0, &vr1);
return;
}
else if (code == LSHIFT_EXPR