Delete get_inner_array_type. Use strip_array_types instead.
authorAlan Modra <amodra@bigpond.net.au>
Sun, 25 May 2008 03:58:15 +0000 (03:58 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Sun, 25 May 2008 03:58:15 +0000 (13:28 +0930)
From-SVN: r135858

gcc/ChangeLog
gcc/c-common.c
gcc/c-common.h
gcc/config/i386/i386.c
gcc/config/pa/pa.c
gcc/config/rs6000/aix.h
gcc/config/rs6000/linux64.h
gcc/tree.c
gcc/tree.h
libobjc/ChangeLog
libobjc/encoding.c

index 6c0162f0f3ebd0a0c8cb9db45c94e541da06b01b..5c4a0b3ebdb4688d186ab0f657c8bba16cb955d5 100644 (file)
@@ -1,3 +1,16 @@
+2008-05-25  Alan Modra  <amodra@bigpond.net.au>
+
+       * c-common.c (strip_array_types): Move function to..
+       * tree.c: ..here.
+       (get_inner_array_type): Delete.
+       * c-common.h (strip_array_types): Move declaration to..
+       * tree.h: ..here.
+       (get_inner_array_type): Delete.
+       * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
+       * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
+       * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
+       * config/pa/pa.c (emit_move_sequence): Likewise.
+
 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
 
        * config/i386/i386.md (*sse_prologue_save_insn): Set length
index 70ba5cc485150a36f4a91f3e3bcab0bf2d207bf1..c02b442c7aa0259f6a2091acdd8f7b32c51ea464 100644 (file)
@@ -4173,18 +4173,6 @@ self_promoting_args_p (const_tree parms)
   return 1;
 }
 
-/* Recursively examines the array elements of TYPE, until a non-array
-   element type is found.  */
-
-tree
-strip_array_types (tree type)
-{
-  while (TREE_CODE (type) == ARRAY_TYPE)
-    type = TREE_TYPE (type);
-
-  return type;
-}
-
 /* Recursively remove any '*' or '&' operator from TYPE.  */
 tree
 strip_pointer_operator (tree t)
index c403bee634392547d6058a799d3ea96abaea1cb1..ea692230bf069c905f4ebb7cc844455b02484a81 100644 (file)
@@ -738,7 +738,6 @@ extern alias_set_type c_common_get_alias_set (tree);
 extern void c_register_builtin_type (tree, const char*);
 extern bool c_promoting_integer_type_p (const_tree);
 extern int self_promoting_args_p (const_tree);
-extern tree strip_array_types (tree);
 extern tree strip_pointer_operator (tree);
 extern tree strip_pointer_or_array_types (tree);
 extern HOST_WIDE_INT c_common_to_target_charset (HOST_WIDE_INT);
index 0f140c8adf72ff37a86ff0cf29c5c3554aa961bf..369ae5848678b3c574d64852b8957215a55da041 100644 (file)
@@ -23225,8 +23225,7 @@ x86_field_alignment (tree field, int computed)
 
   if (TARGET_64BIT || TARGET_ALIGN_DOUBLE)
     return computed;
-  mode = TYPE_MODE (TREE_CODE (type) == ARRAY_TYPE
-                   ? get_inner_array_type (type) : type);
+  mode = TYPE_MODE (strip_array_types (type));
   if (mode == DFmode || mode == DCmode
       || GET_MODE_CLASS (mode) == MODE_INT
       || GET_MODE_CLASS (mode) == MODE_COMPLEX_INT)
index 10c50ffcf12d71b6769f7d138ee7aacbd17e3a3e..009f5faf10cadfe248d670ab5fe5d4d5710eb5c7 100644 (file)
@@ -1712,8 +1712,7 @@ emit_move_sequence (rtx *operands, enum machine_mode mode, rtx scratch_reg)
                    decl = TREE_OPERAND (decl, 1);
 
                  type = TREE_TYPE (decl);
-                 if (TREE_CODE (type) == ARRAY_TYPE)
-                   type = get_inner_array_type (type);
+                 type = strip_array_types (type);
 
                  if (POINTER_TYPE_P (type))
                    {
index 99587bb9b9561f671bbd2574375056676de1b4bc..09e0fe507cff1d9e02aa0683a126dbcf9b6657a8 100644 (file)
 /* This now supports a natural alignment mode.  */
 /* AIX word-aligns FP doubles but doubleword-aligns 64-bit ints.  */
 #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
-  (TARGET_ALIGN_NATURAL ? (COMPUTED) : \
-  (TYPE_MODE (TREE_CODE (TREE_TYPE (FIELD)) == ARRAY_TYPE \
-             ? get_inner_array_type (FIELD) \
-             : TREE_TYPE (FIELD)) == DFmode \
-   ? MIN ((COMPUTED), 32) : (COMPUTED)))
+  ((TARGET_ALIGN_NATURAL == 0                                          \
+    && TYPE_MODE (strip_array_types (TREE_TYPE (FIELD))) == DFmode)    \
+   ? MIN ((COMPUTED), 32)                                              \
+   : (COMPUTED))
 
 /* AIX increases natural record alignment to doubleword if the first
    field is an FP double while the FP fields remain word aligned.  */
index eea5fd73e8762fd9de0f662908b69febe2e1c97c..e83e0e9697aab3eada82f25f932f65803be4fed6 100644 (file)
@@ -217,9 +217,7 @@ extern int dot_symbols;
    ? 128                                                               \
    : (TARGET_64BIT                                                     \
       && TARGET_ALIGN_NATURAL == 0                                     \
-      && TYPE_MODE (TREE_CODE (TREE_TYPE (FIELD)) == ARRAY_TYPE                \
-                   ? get_inner_array_type (FIELD)                      \
-                   : TREE_TYPE (FIELD)) == DFmode)                     \
+      && TYPE_MODE (strip_array_types (TREE_TYPE (FIELD))) == DFmode)  \
    ? MIN ((COMPUTED), 32)                                              \
    : (COMPUTED))
 
index 51eba929ff5255f8b645ec783ce39c1d38914d24..38e069389688490dd8c6a7342787fd4ff1f0a935 100644 (file)
@@ -5682,14 +5682,12 @@ build_array_type (tree elt_type, tree index_type)
   return t;
 }
 
-/* Return the TYPE of the elements comprising
-   the innermost dimension of ARRAY.  */
+/* Recursively examines the array elements of TYPE, until a non-array
+   element type is found.  */
 
 tree
-get_inner_array_type (const_tree array)
+strip_array_types (tree type)
 {
-  tree type = TREE_TYPE (array);
-
   while (TREE_CODE (type) == ARRAY_TYPE)
     type = TREE_TYPE (type);
 
index 0618d0ab52e7d19cf6c9f33cdf36feada853fcc2..6b609fdd2e08e7acbc6bf4eb6155388942eb4c08 100644 (file)
@@ -4011,7 +4011,7 @@ extern int tree_int_cst_sign_bit (const_tree);
 extern bool tree_expr_nonnegative_p (tree);
 extern bool tree_expr_nonnegative_warnv_p (tree, bool *);
 extern bool may_negate_without_overflow_p (const_tree);
-extern tree get_inner_array_type (const_tree);
+extern tree strip_array_types (tree);
 
 /* Construct various nodes representing fract or accum data types.  */
 
index 046b652248b793227dde7965a355a586c3bbdcd5..df30eaae50cfe6d66f663b27e47fec2dfea80f8b 100644 (file)
@@ -1,3 +1,8 @@
+2008-05-25  Alan Modra  <amodra@bigpond.net.au>
+
+       * encoding.c (strip_array_types): Rename from get_inner_array_type.
+       (rs6000_special_round_type_align): Update.
+
 2008-05-09  Julian Brown  <julian@codesourcery.com>
 
        * Makefile.in (LTLDFLAGS): New.
index e65634103aa41c55ff2b903e29ac74513d2a17a4..93395ddaffce023c4902b45352c8561060d59aab 100644 (file)
@@ -78,7 +78,7 @@ Boston, MA 02110-1301, USA.  */
 
 #define DFmode          _C_DBL
 
-#define get_inner_array_type(TYPE)      ({const char *_field = (TYPE); \
+#define strip_array_types(TYPE)      ({const char *_field = (TYPE); \
   while (*_field == _C_ARY_B)\
     {\
       while (isdigit ((unsigned char)*++_field))\
@@ -115,9 +115,7 @@ static int __attribute__ ((__unused__)) not_target_flags = 0;
 #define rs6000_special_round_type_align(STRUCT, COMPUTED, SPECIFIED)   \
   ({ const char *_fields = TYPE_FIELDS (STRUCT);                               \
   ((_fields != 0                                                       \
-    && TYPE_MODE (TREE_CODE (TREE_TYPE (_fields)) == ARRAY_TYPE                \
-                   ? get_inner_array_type (_fields)                    \
-                   : TREE_TYPE (_fields)) == DFmode)                   \
+    && TYPE_MODE (strip_array_types (TREE_TYPE (_fields))) == DFmode)  \
    ? MAX (MAX (COMPUTED, SPECIFIED), 64)                               \
    : MAX (COMPUTED, SPECIFIED));})
 /* FIXME: The word 'fixme' is insufficient to explain the wrong-ness