Alignments are stored in a byte, large alignments don't actually work nicely. This caps the alignment to 128, as most ports would define BIGGEST_ALIGNMENT to be smaller than this. The competing change would to be to make it a short, but, I'd be happy to punt that until such time as someone actually needs that.
Ports break down this way currently: 12 #define BIGGEST_ALIGNMENT 64 10 #define BIGGEST_ALIGNMENT 32 6 #define BIGGEST_ALIGNMENT 128 3 #define BIGGEST_ALIGNMENT 8 8 #define BIGGEST_ALIGNMENT 16 Ok? diff --git a/gcc/genmodes.c b/gcc/genmodes.c index b4dc0d2..8f4980c 100644 --- a/gcc/genmodes.c +++ b/gcc/genmodes.c @@ -1178,7 +1178,7 @@ emit_mode_base_align (void) alignment); for_all_modes (c, m) - tagged_printf ("%u", m->alignment, m->name); + tagged_printf ("%u", m->alignment > 128 ? 128 : m->alignment, m->name); print_closer (); }