diff options
author | Marek Polacek <polacek@redhat.com> | 2013-08-30 10:24:49 +0200 |
---|---|---|
committer | Marek Polacek <polacek@redhat.com> | 2013-08-30 10:24:49 +0200 |
commit | 1a986fd51aa96fbd0d66f4d52739356374912563 (patch) | |
tree | f5310553e69c8a35180556d9af7e66bdecac7f92 /gcc/tree-vrp.c | |
parent | 61fb959b676db6ca9ef0da335dfef0d8ec08e113 (diff) | |
parent | f85c9de6ba5165bc1b941ceb09e4e8ffb1c7eb0f (diff) | |
download | gcc-ubsan.tar.gz |
Merge branch 'master' of git+ssh://gcc.gnu.org/git/gcc into ubsanubsan
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r-- | gcc/tree-vrp.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 48b9f7a072c..d5548ff55eb 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -5410,10 +5410,14 @@ register_edge_assert_for_1 (tree op, enum tree_code code, && gimple_assign_rhs_code (op_def) == BIT_IOR_EXPR)) { /* Recurse on each operand. */ - retval |= register_edge_assert_for_1 (gimple_assign_rhs1 (op_def), - code, e, bsi); - retval |= register_edge_assert_for_1 (gimple_assign_rhs2 (op_def), - code, e, bsi); + tree op0 = gimple_assign_rhs1 (op_def); + tree op1 = gimple_assign_rhs2 (op_def); + if (TREE_CODE (op0) == SSA_NAME + && has_single_use (op0)) + retval |= register_edge_assert_for_1 (op0, code, e, bsi); + if (TREE_CODE (op1) == SSA_NAME + && has_single_use (op1)) + retval |= register_edge_assert_for_1 (op1, code, e, bsi); } else if (gimple_assign_rhs_code (op_def) == BIT_NOT_EXPR && TYPE_PRECISION (TREE_TYPE (gimple_assign_lhs (op_def))) == 1) |