On Fri, Feb 08, 2008 at 09:20:30PM +0100, Arnaud Charlet wrote:
> I can confirm that I had no troubles building i686-linux with latest
> sources.
> 
> I suspect a miscompilation of the previous stage compiler, possibly caused
> by a bad initial compiler used to start the bootstrap, or the use of
> "dangerous" compiler option during bootstrap.
> 
> I'd suggest trying again with the default switches to see if it makes a
> difference.

My patch

http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00184.html

breaks Ada on ia32. My patch changes long long alignment on ia32
from 8 byte to 4 byte, as the psABI suggested.  We alreay align
long long to 4 byte in structure:

sh-3.2$ cat x.c
#include <stdio.h>
struct foo
{
  int x;
  long long y;
};
struct bar
{
  int x;
  long long y [2];
};
int main ()
{
  printf ("%d\n", __builtin_offsetof (struct foo, y));
  printf ("%d\n", __builtin_offsetof (struct bar, y));
}
bash-3.2$ gcc -m32 x.c
bash-3.2$ ./a.out 
4
4
bash-3.2$ gcc -m64 x.c
bash-3.2$ ./a.out 
8
8
bash-3.2$ 

My patch will only change alignment for long long scalars and arrays. 
What alignments do Ada expect for long long on ia32? Does Ada expect
8 byte alignments for struct/record?


H.J.

Reply via email to