+2004-05-10 Paul Brook <paul@codesourcery.com>
+
+ * config/arm/arm.c (arm_promote_prototypes): Use TARGET_AAPCS_BASED.
+ * config/arm/arm.h (TARGET_AAPCS_BASED): Define.
+ (TARGET_DOUBLEWORD_ALIGN): Use it.
+ (WCHAR_TYPE): Define.
+ (WCHAR_SIZE_TYPE): Define.
+ (SIZE_TYPE): Define.
+
2004-05-10 Alan Modra <amodra@bigpond.net.au>
* config/rs6000/rs6000.c (function_arg_boundary): Align for ABI_V4
: (target_flags & THUMB_FLAG_BACKTRACE))
#define TARGET_CIRRUS_FIX_INVALID_INSNS (target_flags & CIRRUS_FIX_INVALID_INSNS)
#define TARGET_LDRD (arm_arch5e && ARM_DOUBLEWORD_ALIGN)
+#define TARGET_AAPCS_BASED \
+ (arm_abi != ARM_ABI_APCS && arm_abi != ARM_ABI_ATPCS)
/* SUBTARGET_SWITCHES is used to add flags on a per-config basis. */
#ifndef SUBTARGET_SWITCHES
#define UNITS_PER_WORD 4
/* True if natural alignment is used for doubleword types. */
-#define ARM_DOUBLEWORD_ALIGN \
- (arm_abi == ARM_ABI_AAPCS || arm_abi == ARM_ABI_IWMMXT)
+#define ARM_DOUBLEWORD_ALIGN TARGET_AAPCS_BASED
+
#define DOUBLEWORD_ALIGNMENT 64
#define PARM_BOUNDARY 32
/* Nonzero if move instructions will actually fail to work
when given unaligned data. */
#define STRICT_ALIGNMENT 1
+
+/* wchar_t is unsigned under the AAPCS. */
+#ifndef WCHAR_TYPE
+#define WCHAR_TYPE (TARGET_AAPCS_BASED ? "unsigned int" : "int")
+
+#define WCHAR_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef SIZE_TYPE
+#define SIZE_TYPE (TARGET_AAPCS_BASED ? "unsigned int" : "long unsigned int")
+#endif
\f
/* Standard register usage. */