aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
authorYury Gribov <tetra2005@gmail.com>2017-06-16 07:16:34 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-06-16 07:16:34 +0000
commit32e37414af3e1e236a2c7400c9d7178ede77ce4d (patch)
tree33888cdb59100c208a9795f33d63006b1a8d4a98 /gcc/tree-vrp.c
parent0186cacf9560ba0572b23e01085c3b00fbe38f56 (diff)
downloadgcc-32e37414af3e1e236a2c7400c9d7178ede77ce4d.zip
gcc-32e37414af3e1e236a2c7400c9d7178ede77ce4d.tar.gz
gcc-32e37414af3e1e236a2c7400c9d7178ede77ce4d.tar.bz2
re PR tree-optimization/81089 (ICE: tree check: expected ssa_name, have integer_cst in register_edge_assert_for_2, at tree-vrp.c:5023)
2017-06-16 Yury Gribov <tetra2005@gmail.com> PR tree-optimization/81089 * tree-vrp.c (is_masked_range_test): Validate operands of subexpression. From-SVN: r249237
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r--gcc/tree-vrp.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index a7424a3..9ca3924 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -5651,8 +5651,9 @@ is_masked_range_test (tree name, tree valt, enum tree_code cond_code,
|| gimple_assign_rhs_code (def_stmt) != BIT_AND_EXPR)
return false;
+ tree t = gimple_assign_rhs1 (def_stmt);
tree maskt = gimple_assign_rhs2 (def_stmt);
- if (TREE_CODE (maskt) != INTEGER_CST)
+ if (TREE_CODE (t) != SSA_NAME || TREE_CODE (maskt) != INTEGER_CST)
return false;
wide_int mask = maskt;
@@ -5663,11 +5664,9 @@ is_masked_range_test (tree name, tree valt, enum tree_code cond_code,
|| (val & mask) != val)
return false;
- tree t = gimple_assign_rhs1 (def_stmt);
- tree type = TREE_TYPE (t);
-
bool is_range = cond_code == EQ_EXPR;
+ tree type = TREE_TYPE (t);
wide_int min = wi::min_value (type),
max = wi::max_value (type);