aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2013-04-18 09:54:58 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2013-04-18 09:54:58 +0200
commit4c445590e158cf39a9ca00fa1586b25c0851bd72 (patch)
tree4808210d675a550453f4f3c95620b9cd502a1771 /gcc/tree-vrp.c
parentae1e2600eb59a0df56f81402228efb0e64ab47c6 (diff)
downloadgcc-4c445590e158cf39a9ca00fa1586b25c0851bd72.zip
gcc-4c445590e158cf39a9ca00fa1586b25c0851bd72.tar.gz
gcc-4c445590e158cf39a9ca00fa1586b25c0851bd72.tar.bz2
re PR tree-optimization/56984 (ICE in tree_vrp.c)
PR tree-optimization/56984 * tree-vrp.c (register_edge_assert_for_2): For (x >> M) < N and (x >> M) >= N don't register any assertion if N << M is the minimum value. * gcc.c-torture/compile/pr56984.c: New test. From-SVN: r198051
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r--gcc/tree-vrp.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index be1a380..5b4321a 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -4895,7 +4895,13 @@ register_edge_assert_for_2 (tree name, edge e, gimple_stmt_iterator bsi,
new_comp_code = comp_code == EQ_EXPR ? LE_EXPR : GT_EXPR;
}
else if (comp_code == LT_EXPR || comp_code == GE_EXPR)
- new_val = val2;
+ {
+ double_int minval
+ = double_int::min_value (prec, TYPE_UNSIGNED (TREE_TYPE (val)));
+ new_val = val2;
+ if (minval == tree_to_double_int (new_val))
+ new_val = NULL_TREE;
+ }
else
{
double_int maxval