This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: ix86_data_alignment: bad defaults?
DJ Delorie <dj@redhat.com> writes:
> > Yes, BIGGEST_ALIGNMENT is supposed to be the biggest alignment the
> > compiler will ever use.
>
> Will ever use, or can ever use? Based on the code, it looks like "can
> ever use" - i.e. it's an edict to the compiler to not exceed that
> value, thus varasm warns when you exceed it.
It's the biggest alignment which the compiler will ever use if it
doesn't see an explicit __attribute__ ((align (N))). The biggest
alignment which the compiler is permitted to use is set by
MAX_OFILE_ALIGNMENT. Basically, MAX_OFILE_ALIGNMENT is a restriction
on __attribute__ ((align (N))).
> > So if ix86_data_alignment wants to return 256 for some variable,
> > then it seems to me that BIGGEST_ALIGNMENT should be 256.
>
> What if the object format doesn't allow recording alignments that
> high? For example, DJGPP's coff format can only record alignments up
> to 2**4 (16) bytes, but 256 bits is 2**5 (32) bytes.
So BIGGEST_ALIGNMENT > MAX_OFILE_ALIGNMENT. That's a logical
contradiction. Bummer.
I don't have a proposal for fixing this except some target specific
hackery in config/i386. Perhaps somebody else has a better
suggestion?
Ian