===================================================================
@@ -105,10 +105,22 @@ static int __attribute__ ((__unused__)) not_target
#undef ALTIVEC_VECTOR_MODE
#define ALTIVEC_VECTOR_MODE(MODE) (0)
+/* Furthermore, some (powerpc) targets also use TARGET_ALIGN_NATURAL
+ in their alignment macros. Currently[4.5/6], rs6000.h points this
+ to a static variable, initialized by target overrides. This is
reset
+ in linux64.h but not in darwin64.h and therefore, all the darwin64
+ stuff is broken. This echoes the comments above and below about
+ the badness of the approach. Other powerpc64 targets might also
+ be affected. */
+
+#if defined(DEFAULT_ABI) && (DEFAULT_ABI==ABI_DARWIN) && __LP64__
+# undef TARGET_ALIGN_NATURAL
+# define TARGET_ALIGN_NATURAL 1
+#endif
/* FIXME: while this file has no business including tm.h, this
definitely has no business defining this macro but it
- is only way around without really rewritting this file,
+ is only way around without really rewriting this file,
should look after the branch of 3.4 to fix this. */
#define rs6000_special_round_type_align(STRUCT, COMPUTED, SPECIFIED) \