diff options
Diffstat (limited to 'gcc/tree-ssanames.cc')
| -rw-r--r-- | gcc/tree-ssanames.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/tree-ssanames.cc b/gcc/tree-ssanames.cc index b6ca880..dcf8da5 100644 --- a/gcc/tree-ssanames.cc +++ b/gcc/tree-ssanames.cc @@ -611,15 +611,15 @@ get_known_nonzero_bits (const_tree name) return get_known_nonzero_bits_1 (name); } -/* Return TRUE is OP, an SSA_NAME has a range of values [0..1], false - otherwise. +/* Return TRUE is OP, an SSA_NAME has a range of values [0..1] at the + STMT, false otherwise. This can be because it is a boolean type, any unsigned integral type with a single bit of precision, or has known range of [0..1] via range analysis. */ bool -ssa_name_has_boolean_range (tree op) +ssa_name_has_boolean_range (tree op, gimple *stmt) { gcc_assert (TREE_CODE (op) == SSA_NAME); @@ -636,7 +636,7 @@ ssa_name_has_boolean_range (tree op) && (TYPE_PRECISION (TREE_TYPE (op)) > 1)) { int_range<2> r; - if (get_range_query (cfun)->range_of_expr (r, op) + if (get_range_query (cfun)->range_of_expr (r, op, stmt) && r == range_true_and_false (TREE_TYPE (op))) return true; |
