tree.def (FFS_EXPR, [...]): Delete unused tree codes.
authorRoger Sayle <roger@eyesopen.com>
Thu, 18 Sep 2003 15:06:02 +0000 (15:06 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Thu, 18 Sep 2003 15:06:02 +0000 (15:06 +0000)
* 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.

* cp/lex.c (init_operators): Remove operator_name_info for FFS_EXPR.
* cp/class.c (instantiate_type): Remove FFS_EXPR case.

* f/com.c (ffecom_overlap_): Remove FFS_EXPR case.
(ffecom_tree_canonize_ref_): Likewise.
(ffe_truthvalue_conversion): Likewise.

* java/expr.c (java_truthvalue_conversion): Remove FFS_EXPR case.
* java/check-init.c (check_init): Likewise.

From-SVN: r71525

14 files changed:
gcc/ChangeLog
gcc/c-common.c
gcc/c-pretty-print.c
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/lex.c
gcc/expr.c
gcc/f/ChangeLog
gcc/f/com.c
gcc/fold-const.c
gcc/java/ChangeLog
gcc/java/check-init.c
gcc/java/expr.c
gcc/tree.def

index 53cc64271b7536253643c0507024b160fe82339f..3f2cff373748f6398e0dbfb8f55a63b7b47769c6 100644 (file)
@@ -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.
index 49c6acab0133ad10ae4dcf687bd5cd82b5b17e0e..e6d4197d42ca42a1964048a898a5e0d6f8e9dd10 100644 (file)
@@ -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));
 
index 39dd8dba2b97d61712d34e21333e1a16f4e90cd9..1ddc1d036c7f961b840056683fe104a352550786 100644 (file)
@@ -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:
index 0ba47327079f6e1f3ba3fb60fd05db47e9159d18..1d3c8b207e01feca1f457106afe9c168c6ac6ba3 100644 (file)
@@ -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.
index b76e7db4243a444b97c007b691883e23d42c8732..17ff0e49674d5b0c1ad100651ff204d863941c59 100644 (file)
@@ -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:
index 4e602757eedb1d04f0877513dd555351cfcf496a..6d5482330b2efb0633450e434f6e139b8b122e77 100644 (file)
@@ -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";
index 584250bdd315a9b90bee66b81ede7b74ef1948fe..0b6a93b3a16031a07ee303e035aec97222238103 100644 (file)
@@ -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)
index 62a7941aad9b667b86f71822c1fee56a5bd2cc04..73d2a42ad3610912d4726ca77f61e2a0d768a2d5 100644 (file)
@@ -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.
index b5e6fddb0679c33cf678606770ed36d8e34a2f6b..a5100d9bfa9297448ff5cb6489bf3dad87ebb1d0 100644 (file)
@@ -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));
 
index 07143bcb9855b80c618e4677e187662ff80adb50..24f6b02ec70c8a8cf5ca967e54a5a380ca446a5d 100644 (file)
@@ -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:
index 5c9ca01393072dde18e10e5e818939e1c343cd45..6c6b157eb2034909976b4d9383567b99507ba8a8 100644 (file)
@@ -1,3 +1,8 @@
+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.
index c2272a80b8fc6bba0bc774ade8ce63a7744ed62d..04ce354f5351eea5c8958435d7cebe6c603f162f 100644 (file)
@@ -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;
index 1c7d501f650048a4e2dd61b76ff4832e17c81203..94f23f3661dec35fef9dbaf19334f610282ec399 100644 (file)
@@ -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));
 
index 553e4ed930a2fd66469cc8ca209a79db27660496..4b6d236dde6efa2b4d2757a97cc2db3646a71d23 100644 (file)
@@ -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.