not too big an alignment

Jakub Jelinek jakub@redhat.com
Tue Nov 12 22:12:00 GMT 2013


On Tue, Nov 12, 2013 at 01:11:04PM -0800, Mike Stump wrote:
> 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

You are missing i386 that has BIGGEST_ALIGNMENT 512 (or less, depending on
compiler options).  So this doesn't look right.

> --- 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 ();
>  }

	Jakub



More information about the Gcc-patches mailing list