diff options
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r-- | gcc/tree-vrp.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 2babe1a..fffeefc 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -414,7 +414,10 @@ symbolic_range_p (value_range_t *vr) static bool vrp_expr_computes_nonnegative (tree expr) { - return tree_expr_nonnegative_p (expr); + bool ovf; + + /* FIXME: May need to record overflow information here. */ + return tree_expr_nonnegative_warnv_p (expr, &ovf); } /* Like tree_expr_nonzero_p, but this function uses value ranges @@ -423,7 +426,10 @@ vrp_expr_computes_nonnegative (tree expr) static bool vrp_expr_computes_nonzero (tree expr) { - if (tree_expr_nonzero_p (expr)) + bool ovf; + + /* FIXME: May need to record overflow information here. */ + if (tree_expr_nonzero_warnv_p (expr, &ovf)) return true; /* If we have an expression of the form &X->a, then the expression @@ -1697,7 +1703,10 @@ extract_range_from_unary_expr (value_range_t *vr, tree expr) determining if it evaluates to NULL [0, 0] or non-NULL (~[0, 0]). */ if (POINTER_TYPE_P (TREE_TYPE (expr)) || POINTER_TYPE_P (TREE_TYPE (op0))) { - if (range_is_nonnull (&vr0) || tree_expr_nonzero_p (expr)) + bool ovf; + + /* FIXME: May need to record overflow information here. */ + if (range_is_nonnull (&vr0) || tree_expr_nonzero_warnv_p (expr, &ovf)) set_value_range_to_nonnull (vr, TREE_TYPE (expr)); else if (range_is_null (&vr0)) set_value_range_to_null (vr, TREE_TYPE (expr)); |