aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/linux64.h
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2004-01-17 19:48:50 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2004-01-17 11:48:50 -0800
commit95727fb877e650d1d4be5798151a2cde09cd0553 (patch)
treea0ab8ee208b07c4e48ee3c5ef3d40bc702369877 /gcc/config/rs6000/linux64.h
parent4bfaff4d24177c907f1ecb4062501a422f63c6e0 (diff)
downloadgcc-95727fb877e650d1d4be5798151a2cde09cd0553.zip
gcc-95727fb877e650d1d4be5798151a2cde09cd0553.tar.gz
gcc-95727fb877e650d1d4be5798151a2cde09cd0553.tar.bz2
re PR target/10781 (wrong class size and alignment with static class member)
2004-01-17 Andrew Pinski <pinskia@physics.uc.edu> PR target/10781 * config/rs6000/rs6000-protos.h (rs6000_special_round_type_align): Prototype. * config/rs6000/rs6000.c (rs6000_special_round_type_align): New function. * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Use it. * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Likewise. * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Likewise. 2004-01-17 Andrew Pinski <pinskia@physics.uc.edu> PR target/10781 * encoding.c (rs6000_special_round_type_align): Define. From-SVN: r76043
Diffstat (limited to 'gcc/config/rs6000/linux64.h')
-rw-r--r--gcc/config/rs6000/linux64.h22
1 files changed, 10 insertions, 12 deletions
diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
index d56c106..d36aef4 100644
--- a/gcc/config/rs6000/linux64.h
+++ b/gcc/config/rs6000/linux64.h
@@ -224,19 +224,17 @@
: (COMPUTED))
/* PowerPC64 Linux increases natural record alignment to doubleword if
- the first field is an FP double. */
+ the first field is an FP double, only if in power alignment mode. */
#undef ROUND_TYPE_ALIGN
-#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \
- ((TARGET_ALTIVEC && TREE_CODE (STRUCT) == VECTOR_TYPE) \
- ? MAX (MAX ((COMPUTED), (SPECIFIED)), 128) \
- : (TARGET_64BIT \
- && (TREE_CODE (STRUCT) == RECORD_TYPE \
- || TREE_CODE (STRUCT) == UNION_TYPE \
- || TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \
- && TYPE_FIELDS (STRUCT) != 0 \
- && TARGET_ALIGN_NATURAL == 0 \
- && DECL_MODE (TYPE_FIELDS (STRUCT)) == DFmode) \
- ? MAX (MAX ((COMPUTED), (SPECIFIED)), 64) \
+#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \
+ ((TARGET_ALTIVEC && TREE_CODE (STRUCT) == VECTOR_TYPE) \
+ ? MAX (MAX ((COMPUTED), (SPECIFIED)), 128) \
+ : (TARGET_64BIT \
+ && (TREE_CODE (STRUCT) == RECORD_TYPE \
+ || TREE_CODE (STRUCT) == UNION_TYPE \
+ || TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \
+ && TARGET_ALIGN_NATURAL == 0) \
+ ? rs6000_special_round_type_align (STRUCT, COMPUTED, SPECIFIED) \
: MAX ((COMPUTED), (SPECIFIED)))
/* Indicate that jump tables go in the text section. */