With powerpc-eabi-gcc, I noticed that there's been a small
change between gcc-3.4 and gcc-4.1 in how automatic char arrays
are allocated.

In gcc-3.4, char arrays are aligned on word boundaries.
In gcc-4.1, they are aligned on byte boundaries.

For example:

void foo() {
  char a[31];
  char b[31];
  ...

On gcc-3.4, "b" would be allocated at a+32; in gcc-4.1, it's a+31.

I can't find a bug report which mentions this, nor
do I see anything in the code either in function.c or
in the LOCAL_ALIGNMENT macro in rs6000.h which would
have this effect.

Was this a deliberate change?  If so, where?

The PPC EABI says that arrays are aligned on the boundary
of the type, which suggests that this was a bug fix.  But
unaligned char arrays make strcpy much slower.

--
Michael Eager    [EMAIL PROTECTED]
1960 Park Blvd., Palo Alto, CA 94306  650-325-8077

Reply via email to