diff options
author | Jakub Jelinek <jakub@redhat.com> | 2013-04-18 09:54:58 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-04-18 09:54:58 +0200 |
commit | 4c445590e158cf39a9ca00fa1586b25c0851bd72 (patch) | |
tree | 4808210d675a550453f4f3c95620b9cd502a1771 /gcc/tree-vrp.c | |
parent | ae1e2600eb59a0df56f81402228efb0e64ab47c6 (diff) | |
download | gcc-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.c | 8 |
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 |