diff options
Diffstat (limited to 'gcc/gimple-range-infer.cc')
-rw-r--r-- | gcc/gimple-range-infer.cc | 9 |
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. |