aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-range-infer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/gimple-range-infer.cc')
-rw-r--r--gcc/gimple-range-infer.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/gimple-range-infer.cc b/gcc/gimple-range-infer.cc
index 3b1abbe..72f71b9 100644
--- a/gcc/gimple-range-infer.cc
+++ b/gcc/gimple-range-infer.cc
@@ -208,8 +208,13 @@ gimple_infer_range::gimple_infer_range (gimple *s, range_query *q,
continue;
if (integer_nonzerop (arg2))
add_nonzero (arg);
- // FIXME: Can one query here whether arg2 has
- // nonzero range if it is a SSA_NAME?
+ else
+ {
+ value_range r (TREE_TYPE (arg2));
+ if (q->range_of_expr (r, arg2, s)
+ && !r.contains_p (build_zero_cst (TREE_TYPE (arg2))))
+ add_nonzero (arg);
+ }
}
}
// Fallthru and walk load/store ops now.