aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
authorPaul Koning <pkoning@gcc.gnu.org>2011-10-12 11:16:14 -0400
committerRichard Biener <rguenth@gcc.gnu.org>2011-10-12 15:16:14 +0000
commitebbcd0c6ea5d565ffa743079449e9ad6169fcf4e (patch)
tree3ffba0dcaa6b493eae88e206b1ecc248b9a7f350 /gcc/tree-vrp.c
parent7e19152238f44ead7b8fc2dea1c73ba845fb2d9b (diff)
downloadgcc-ebbcd0c6ea5d565ffa743079449e9ad6169fcf4e.zip
gcc-ebbcd0c6ea5d565ffa743079449e9ad6169fcf4e.tar.gz
gcc-ebbcd0c6ea5d565ffa743079449e9ad6169fcf4e.tar.bz2
re PR middle-end/50189 (Wrong code error in -O2 [-fstrict-enums] compile, target independent)
2011-10-12 Paul Koning <pkoning@gcc.gnu.org> PR tree-optimization/50189 * tree-vrp.c (extract_range_from_assert): Use the type of the variable, not the limit. * g++.dg/torture/pr50189.C: New testcase. From-SVN: r179857
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r--gcc/tree-vrp.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 56fc5a2..604e7f0 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -1519,7 +1519,7 @@ extract_range_from_assert (value_range_t *vr_p, tree expr)
limit = avoid_overflow_infinity (limit);
- type = TREE_TYPE (limit);
+ type = TREE_TYPE (var);
gcc_assert (limit != var);
/* For pointer arithmetic, we only keep track of pointer equality
@@ -1693,8 +1693,8 @@ extract_range_from_assert (value_range_t *vr_p, tree expr)
/* For LT_EXPR, we create the range [MIN, MAX - 1]. */
if (cond_code == LT_EXPR)
{
- tree one = build_int_cst (type, 1);
- max = fold_build2 (MINUS_EXPR, type, max, one);
+ tree one = build_int_cst (TREE_TYPE (max), 1);
+ max = fold_build2 (MINUS_EXPR, TREE_TYPE (max), max, one);
if (EXPR_P (max))
TREE_NO_WARNING (max) = 1;
}
@@ -1728,8 +1728,8 @@ extract_range_from_assert (value_range_t *vr_p, tree expr)
/* For GT_EXPR, we create the range [MIN + 1, MAX]. */
if (cond_code == GT_EXPR)
{
- tree one = build_int_cst (type, 1);
- min = fold_build2 (PLUS_EXPR, type, min, one);
+ tree one = build_int_cst (TREE_TYPE (min), 1);
+ min = fold_build2 (PLUS_EXPR, TREE_TYPE (min), min, one);
if (EXPR_P (min))
TREE_NO_WARNING (min) = 1;
}