diff options
author | Kaveh R. Ghazi <ghazi@caip.rutgers.edu> | 2000-04-08 04:45:18 +0000 |
---|---|---|
committer | Kaveh Ghazi <ghazi@gcc.gnu.org> | 2000-04-08 04:45:18 +0000 |
commit | 3facde269a04c33b91becb5cf4397fb69077895d (patch) | |
tree | ffab24c880d3a50de4e3ea9bfc57f63e27c41487 /gcc/tree.c | |
parent | 155d8a473c79aa5a557ee37306f83b28353b06d4 (diff) | |
download | gcc-3facde269a04c33b91becb5cf4397fb69077895d.zip gcc-3facde269a04c33b91becb5cf4397fb69077895d.tar.gz gcc-3facde269a04c33b91becb5cf4397fb69077895d.tar.bz2 |
tree.c (tree_expr_nonnegative_p): New function.
* tree.c (tree_expr_nonnegative_p): New function.
* tree.h (tree_expr_nonnegative_p): Declare.
* c-typeck.c (build_binary_op): Call `tree_expr_nonnegative_p' to
elide some sign_compare warnings.
(build_conditional_expr): Likewise.
cp:
* typeck.c (build_binary_op): Call `tree_expr_nonnegative_p' to elide
some sign_compare warnings.
From-SVN: r33019
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -4370,6 +4370,25 @@ tree_int_cst_sgn (t) return 1; } +/* Return true if `t' is known to be non-negative. */ + +int +tree_expr_nonnegative_p (t) + tree t; +{ + switch (TREE_CODE (t)) + { + case INTEGER_CST: + return tree_int_cst_sgn (t) >= 0; + case COND_EXPR: + return tree_expr_nonnegative_p (TREE_OPERAND (t, 1)) + && tree_expr_nonnegative_p (TREE_OPERAND (t, 2)); + default: + /* We don't know sign of `t', so be safe and return false. */ + return 0; + } +} + /* Compare two constructor-element-type constants. Return 1 if the lists are known to be equal; otherwise return 0. */ |