The old GET_MODE_SIZE (DImode) (i.e. 64) made sense before
64-bitters. Now the default is just a trap: when using the
default 64, things like TImode (128 bits) still mostly works,
but general corner cases related to computing large-size objects
numbers, like (1 << 64)/8 break, as exposed by
gcc.dg/pr105094.c.
So, keep the floor at 64 for 32-bitters and smaller targets, but
for larger targets, make it 2 * BITS_PER_WORD. Also, express it
more directly with focus on BITS_PER_WORD, not the size of a
mode. Add "by GCC internally" in an attempt to tell that this
is when gcc cooks something up, not when plain input uses a type
with such a mode.
* defaults.h (MAX_FIXED_MODE_SIZE): Default to 2 * BITS_PER_WORD
for larger-than-32-bitters.
* doc/tm.texi.in (MAX_FIXED_MODE_SIZE): Adjust accordingly. Tweak
wording.
* doc/tm.texi: Regenerate.
#endif
#ifndef MAX_FIXED_MODE_SIZE
-#define MAX_FIXED_MODE_SIZE GET_MODE_BITSIZE (DImode)
+#define MAX_FIXED_MODE_SIZE MAX (BITS_PER_WORD * 2, 64)
#endif
/* Nonzero if structures and unions should be returned in memory.
@defmac MAX_FIXED_MODE_SIZE
An integer expression for the size in bits of the largest integer
-machine mode that should actually be used. All integer machine modes of
-this size or smaller can be used for structures and unions with the
-appropriate sizes. If this macro is undefined, @code{GET_MODE_BITSIZE
-(DImode)} is assumed.
+machine mode that should actually be used by GCC internally.
+All integer machine modes of this size or smaller can be used for
+structures and unions with the appropriate sizes. If this macro is
+undefined, @code{MAX (BITS_PER_WORD * 2, 64)} is assumed.
@end defmac
@defmac STACK_SAVEAREA_MODE (@var{save_level})
@defmac MAX_FIXED_MODE_SIZE
An integer expression for the size in bits of the largest integer
-machine mode that should actually be used. All integer machine modes of
-this size or smaller can be used for structures and unions with the
-appropriate sizes. If this macro is undefined, @code{GET_MODE_BITSIZE
-(DImode)} is assumed.
+machine mode that should actually be used by GCC internally.
+All integer machine modes of this size or smaller can be used for
+structures and unions with the appropriate sizes. If this macro is
+undefined, @code{MAX (BITS_PER_WORD * 2, 64)} is assumed.
@end defmac
@defmac STACK_SAVEAREA_MODE (@var{save_level})