From 7dba8395e27f52d22aa11ff2fc147858e34f2a9d Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 5 Feb 2003 14:37:54 -0800 Subject: defaults.h (CLZ_DEFINED_VALUE_AT_ZERO): New. * defaults.h (CLZ_DEFINED_VALUE_AT_ZERO): New. (CTZ_DEFINED_VALUE_AT_ZERO): New. * doc/rtl.texi, doc/tm.texi: Document them. * combine.c (nonzero_bits) [CLZ, CTZ]: Handle the definedness of the value at zero properly. * fold-const.c (tree_expr_nonnegative_p): Likewise. * simplify-rtx.c (simplify_unary_operation): Likewise. * config/alpha/alpha.h (CLZ_DEFINED_VALUE_AT_ZERO): New. (CTZ_DEFINED_VALUE_AT_ZERO): New. * config/arm/arm.c (TARGET_INIT_BUILTINS): Remove. (TARGET_EXPAND_BUILTIN): Remove. (def_builtin, arm_init_builtins, arm_expand_builtin): Remove. * config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO): New. (enum arm_builtins): Remove. * config/arm/arm.md (UNSPEC_CLZ): Remove. (clzsi2): Rename from clz; use clz instead of unspec. (ctzsi2): New. * config/arm/arm-protos.h: Update. From-SVN: r62453 --- gcc/fold-const.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'gcc/fold-const.c') diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 55f4ce4..0e301a7 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -7436,11 +7436,17 @@ tree_expr_nonnegative_p (t) { case ABS_EXPR: case FFS_EXPR: - case CLZ_EXPR: - case CTZ_EXPR: case POPCOUNT_EXPR: case PARITY_EXPR: return 1; + + case CLZ_EXPR: + case CTZ_EXPR: + /* These are undefined at zero. This is true even if + C[LT]Z_DEFINED_VALUE_AT_ZERO is set, since what we're + computing here is a user-visible property. */ + return 0; + case INTEGER_CST: return tree_int_cst_sgn (t) >= 0; case TRUNC_DIV_EXPR: -- cgit v1.1