SPARC is now one of the last mainstream 64-bit platforms that do not define
MAX_FIXED_MODE_SIZE to TImode. Doing so helps the Ada compiler in particular
because it is a heavy user of structures made up of a pair of pointers.
Bootstrapped/regtested/compat-regtested on SPARC64/Solaris, applied on the
mainline.
2012-08-20 Eric Botcazou <[email protected]>
* config/sparc/sparc.h (MAX_FIXED_MODE_SIZE): Define.
--
Eric Botcazou
Index: config/sparc/sparc.h
===================================================================
--- config/sparc/sparc.h (revision 190512)
+++ config/sparc/sparc.h (working copy)
@@ -475,7 +475,6 @@ extern enum cmodel sparc_cmodel;
#endif
/* Now define the sizes of the C data types. */
-
#define SHORT_TYPE_SIZE 16
#define INT_TYPE_SIZE 32
#define LONG_TYPE_SIZE (TARGET_ARCH64 ? 64 : 32)
@@ -512,7 +511,6 @@ extern enum cmodel sparc_cmodel;
#define SPARC_STACK_BOUNDARY_HACK (TARGET_ARCH64 && TARGET_STACK_BIAS)
/* ALIGN FRAMES on double word boundaries */
-
#define SPARC_STACK_ALIGN(LOC) \
(TARGET_ARCH64 ? (((LOC)+15) & ~15) : (((LOC)+7) & ~7))
@@ -551,6 +549,10 @@ extern enum cmodel sparc_cmodel;
: MAX ((COMPUTED), (SPECIFIED))) \
: MAX ((COMPUTED), (SPECIFIED)))
+/* An integer expression for the size in bits of the largest integer machine
+ mode that should actually be used. We allow pairs of registers. */
+#define MAX_FIXED_MODE_SIZE GET_MODE_BITSIZE (TARGET_ARCH64 ? TImode : DImode)
+
/* We need 2 words, so we can save the stack pointer and the return register
of the function containing a non-local goto target. */
#define STACK_SAVEAREA_MODE(LEVEL) \