diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/c-common.c | 2 | ||||
-rw-r--r-- | gcc/c-pretty-print.c | 5 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/class.c | 1 | ||||
-rw-r--r-- | gcc/cp/lex.c | 1 | ||||
-rw-r--r-- | gcc/expr.c | 37 | ||||
-rw-r--r-- | gcc/f/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/f/com.c | 3 | ||||
-rw-r--r-- | gcc/fold-const.c | 25 | ||||
-rw-r--r-- | gcc/java/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/java/check-init.c | 1 | ||||
-rw-r--r-- | gcc/java/expr.c | 1 | ||||
-rw-r--r-- | gcc/tree.def | 7 |
14 files changed, 44 insertions, 70 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 53cc642..3f2cff3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2003-09-18 Roger Sayle <roger@eyesopen.com> + + * tree.def (FFS_EXPR, CLZ_EXPR, CTZ_EXPR, POPCOUNT_EXPR, + PARITY_EXPR): Delete unused tree codes. + * c-common.c (c_common_truthvalue_conversion): Delete references + to FFS_EXPR and POPCOUNT_EXPR. + * c-pretty-print.c (pp_c_postfix_expression): Remove FFS_EXPR. + (pp_c_expression): Likewise. + * expr.c (expand_expr): Delete RTL expansion of FFS_EXPR, CLZ_EXPR, + CTZ_EXPR, POPCOUNT_EXPR and PARITY_EXPR. + * fold-const.c (tree_expr_nonnegative_p): Remove FFS_EXPR, CLZ_EXPR, + CTZ_EXPR, POPCOUNT_EXPR and PARITY_EXPR. Add support for calls to + BUILT_IN_FFS, BUILT_IN_PARITY and BUILT_IN_POPCOUNT and their long + and long long variants. + 2003-09-18 Gabriel Dos Reis <gdr@integrable-solutions.net> * c-pretty-print.h (pp_type_specifier_seq): Fix thinko. diff --git a/gcc/c-common.c b/gcc/c-common.c index 49c6aca..e6d4197 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -2644,8 +2644,6 @@ c_common_truthvalue_conversion (tree expr) case NEGATE_EXPR: case ABS_EXPR: case FLOAT_EXPR: - case FFS_EXPR: - case POPCOUNT_EXPR: /* These don't change whether an object is nonzero or zero. */ return c_common_truthvalue_conversion (TREE_OPERAND (expr, 0)); diff --git a/gcc/c-pretty-print.c b/gcc/c-pretty-print.c index 39dd8db..1ddc1d0 100644 --- a/gcc/c-pretty-print.c +++ b/gcc/c-pretty-print.c @@ -1187,9 +1187,7 @@ pp_c_postfix_expression (c_pretty_printer *pp, tree e) break; case ABS_EXPR: - case FFS_EXPR: - pp_c_identifier (pp, - code == ABS_EXPR ? "__builtin_abs" : "__builtin_ffs"); + pp_c_identifier (pp, "__builtin_abs"); pp_c_left_paren (pp); pp_expression (pp, TREE_OPERAND (e, 0)); pp_c_right_paren (pp); @@ -1707,7 +1705,6 @@ pp_c_expression (c_pretty_printer *pp, tree e) case COMPLEX_EXPR: case VECTOR_CST: case ABS_EXPR: - case FFS_EXPR: case CONSTRUCTOR: case COMPOUND_LITERAL_EXPR: case VA_ARG_EXPR: diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0ba47327..1d3c8b2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2003-09-18 Roger Sayle <roger@eyesopen.com> + + * lex.c (init_operators): Remove operator_name_info for FFS_EXPR. + * class.c (instantiate_type): Remove FFS_EXPR case. + 2003-09-18 Volker Reichelt <reichelt@igpm.rwth-aachen.de> * ChangeLog: Fix recent commit. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index b76e7db..17ff0e4 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -6130,7 +6130,6 @@ instantiate_type (tree lhstype, tree rhs, tsubst_flags_t flags) case ABS_EXPR: case MAX_EXPR: case MIN_EXPR: - case FFS_EXPR: case BIT_AND_EXPR: case BIT_IOR_EXPR: diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 4e60275..6d54823 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -205,7 +205,6 @@ init_operators (void) operator_name_info [(int) FLOOR_MOD_EXPR].name = "(floor %)"; operator_name_info [(int) ROUND_MOD_EXPR].name = "(round %)"; operator_name_info [(int) ABS_EXPR].name = "abs"; - operator_name_info [(int) FFS_EXPR].name = "ffs"; operator_name_info [(int) TRUTH_AND_EXPR].name = "strict &&"; operator_name_info [(int) TRUTH_OR_EXPR].name = "strict ||"; operator_name_info [(int) IN_EXPR].name = "in"; @@ -8525,43 +8525,6 @@ expand_expr (tree exp, rtx target, enum machine_mode tmode, abort (); return temp; - case FFS_EXPR: - op0 = expand_expr (TREE_OPERAND (exp, 0), subtarget, VOIDmode, 0); - if (modifier == EXPAND_STACK_PARM) - target = 0; - temp = expand_unop (mode, ffs_optab, op0, target, 1); - if (temp == 0) - abort (); - return temp; - - case CLZ_EXPR: - op0 = expand_expr (TREE_OPERAND (exp, 0), subtarget, VOIDmode, 0); - temp = expand_unop (mode, clz_optab, op0, target, 1); - if (temp == 0) - abort (); - return temp; - - case CTZ_EXPR: - op0 = expand_expr (TREE_OPERAND (exp, 0), subtarget, VOIDmode, 0); - temp = expand_unop (mode, ctz_optab, op0, target, 1); - if (temp == 0) - abort (); - return temp; - - case POPCOUNT_EXPR: - op0 = expand_expr (TREE_OPERAND (exp, 0), subtarget, VOIDmode, 0); - temp = expand_unop (mode, popcount_optab, op0, target, 1); - if (temp == 0) - abort (); - return temp; - - case PARITY_EXPR: - op0 = expand_expr (TREE_OPERAND (exp, 0), subtarget, VOIDmode, 0); - temp = expand_unop (mode, parity_optab, op0, target, 1); - if (temp == 0) - abort (); - return temp; - /* ??? Can optimize bitwise operations with one arg constant. Can optimize (a bitwise1 n) bitwise2 (a bitwise3 b) and (a bitwise1 b) bitwise2 b (etc) diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 62a7941..73d2a42 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,9 @@ +2003-09-18 Roger Sayle <roger@eyesopen.com> + + * com.c (ffecom_overlap_): Remove FFS_EXPR case. + (ffecom_tree_canonize_ref_): Likewise. + (ffe_truthvalue_conversion): Likewise. + 2003-09-01 Josef Zlomek <zlomekj@suse.cz> * com.c (ffecom_overlap_): Kill BIT_ANDTC_EXPR. diff --git a/gcc/f/com.c b/gcc/f/com.c index b5e6fdd..a5100d9 100644 --- a/gcc/f/com.c +++ b/gcc/f/com.c @@ -1573,7 +1573,6 @@ ffecom_overlap_ (tree dest_decl, tree dest_offset, tree dest_size, case MIN_EXPR: case MAX_EXPR: case ABS_EXPR: - case FFS_EXPR: case LSHIFT_EXPR: case RSHIFT_EXPR: case LROTATE_EXPR: @@ -8882,7 +8881,6 @@ ffecom_tree_canonize_ref_ (tree *decl, tree *offset, tree *size, tree t) case MIN_EXPR: case MAX_EXPR: case ABS_EXPR: - case FFS_EXPR: case LSHIFT_EXPR: case RSHIFT_EXPR: case LROTATE_EXPR: @@ -14801,7 +14799,6 @@ ffe_truthvalue_conversion (tree expr) case NEGATE_EXPR: case ABS_EXPR: case FLOAT_EXPR: - case FFS_EXPR: /* These don't change whether an object is nonzero or zero. */ return ffe_truthvalue_conversion (TREE_OPERAND (expr, 0)); diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 07143bc..24f6b02e 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -8494,18 +8494,8 @@ tree_expr_nonnegative_p (tree t) switch (TREE_CODE (t)) { case ABS_EXPR: - case FFS_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; @@ -8649,12 +8639,21 @@ tree_expr_nonnegative_p (tree t) case BUILT_IN_EXP10: case BUILT_IN_EXP10F: case BUILT_IN_EXP10L: - case BUILT_IN_POW10: - case BUILT_IN_POW10F: - case BUILT_IN_POW10L: case BUILT_IN_FABS: case BUILT_IN_FABSF: case BUILT_IN_FABSL: + case BUILT_IN_FFS: + case BUILT_IN_FFSL: + case BUILT_IN_FFSLL: + case BUILT_IN_PARITY: + case BUILT_IN_PARITYL: + case BUILT_IN_PARITYLL: + case BUILT_IN_POPCOUNT: + case BUILT_IN_POPCOUNTL: + case BUILT_IN_POPCOUNTLL: + case BUILT_IN_POW10: + case BUILT_IN_POW10F: + case BUILT_IN_POW10L: case BUILT_IN_SQRT: case BUILT_IN_SQRTF: case BUILT_IN_SQRTL: diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 5c9ca01..6c6b157 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,5 +1,10 @@ 2003-09-18 Roger Sayle <roger@eyesopen.com> + * expr.c (java_truthvalue_conversion): Remove FFS_EXPR case. + * check-init.c (check_init): Likewise. + +2003-09-18 Roger Sayle <roger@eyesopen.com> + * jcf-write.c (generate_bytecode_insns): Add support for fconst_2. 2003-09-16 Andrew Haley <aph@redhat.com> diff --git a/gcc/java/check-init.c b/gcc/java/check-init.c index c2272a8..04ce354 100644 --- a/gcc/java/check-init.c +++ b/gcc/java/check-init.c @@ -792,7 +792,6 @@ check_init (tree exp, words before) case FIX_FLOOR_EXPR: case FIX_ROUND_EXPR: case ABS_EXPR: - case FFS_EXPR: /* Avoid needless recursion. */ exp = TREE_OPERAND (exp, 0); goto again; diff --git a/gcc/java/expr.c b/gcc/java/expr.c index 1c7d501..94f23f3 100644 --- a/gcc/java/expr.c +++ b/gcc/java/expr.c @@ -175,7 +175,6 @@ java_truthvalue_conversion (tree expr) case NEGATE_EXPR: case ABS_EXPR: case FLOAT_EXPR: - case FFS_EXPR: /* These don't change whether an object is nonzero or zero. */ return java_truthvalue_conversion (TREE_OPERAND (expr, 0)); diff --git a/gcc/tree.def b/gcc/tree.def index 553e4ed..4b6d236 100644 --- a/gcc/tree.def +++ b/gcc/tree.def @@ -615,13 +615,6 @@ DEFTREECODE (MAX_EXPR, "max_expr", '2', 2) operand of the ABS_EXPR must have the same type. */ DEFTREECODE (ABS_EXPR, "abs_expr", '1', 1) -/* Bit scanning and counting. */ -DEFTREECODE (FFS_EXPR, "ffs_expr", '1', 1) -DEFTREECODE (CLZ_EXPR, "clz_expr", '1', 1) -DEFTREECODE (CTZ_EXPR, "ctz_expr", '1', 1) -DEFTREECODE (POPCOUNT_EXPR, "popcount_expr", '1', 1) -DEFTREECODE (PARITY_EXPR, "parity_expr", '1', 1) - /* Shift operations for shift and rotate. Shift means logical shift if done on an unsigned type, arithmetic shift if done on a signed type. |