diff options
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.c | 3 | ||||
-rw-r--r-- | gcc/config/pa/pa.c | 3 | ||||
-rw-r--r-- | gcc/config/rs6000/aix.h | 9 | ||||
-rw-r--r-- | gcc/config/rs6000/linux64.h | 4 |
4 files changed, 7 insertions, 12 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 0f140c8..369ae58 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -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) diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 10c50ff..009f5fa 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -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)) { diff --git a/gcc/config/rs6000/aix.h b/gcc/config/rs6000/aix.h index 99587bb..09e0fe5 100644 --- a/gcc/config/rs6000/aix.h +++ b/gcc/config/rs6000/aix.h @@ -158,11 +158,10 @@ /* 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. */ diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h index eea5fd7..e83e0e9 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h @@ -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)) |