Re: s390{,x} ABI incompatibility between gcc 4.0 and 4.1

2005-11-30 Thread Paolo Bonzini
GCC 4.0.x on s390{,x} aligned vector_size 1/2/4/8/64/128/... types to their size, just vector_size 16 and 32 has been 8 bytes aligned (BIGGEST_ALIGNMENT). It is just a side-effect of the 3.4/4.0 code - if there was a supported integer mode on the target for the requested size, then alignment of

Re: s390{,x} ABI incompatibility between gcc 4.0 and 4.1

2005-11-30 Thread Joern RENNECKE
Jakub Jelinek wrote: On Tue, Nov 29, 2005 at 10:01:25PM +, Joern RENNECKE wrote: If we use MIN (tree_low_cst (TYPE_SIZE (type), 0), BIGGEST_ALIGNMENT) here, I'm afraid that would be much bigger ABI incompatibility. Currently, say typedef char __attribute__((vector_size (64))) v64qi; is 6

Re: s390{,x} ABI incompatibility between gcc 4.0 and 4.1

2005-11-30 Thread Jakub Jelinek
On Tue, Nov 29, 2005 at 10:01:25PM +, Joern RENNECKE wrote: > >If we use MIN (tree_low_cst (TYPE_SIZE (type), 0), BIGGEST_ALIGNMENT) > >here, I'm afraid that would be much bigger ABI incompatibility. > >Currently, say > >typedef char __attribute__((vector_size (64))) v64qi; > >is 64 bytes align

Re: s390{,x} ABI incompatibility between gcc 4.0 and 4.1

2005-11-29 Thread Joern RENNECKE
Jakub Jelinek wrote: If we use MIN (tree_low_cst (TYPE_SIZE (type), 0), BIGGEST_ALIGNMENT) here, I'm afraid that would be much bigger ABI incompatibility. Currently, say typedef char __attribute__((vector_size (64))) v64qi; is 64 bytes aligned on most arches, even when BIGGEST_ALIGNMENT is m

Re: s390{,x} ABI incompatibility between gcc 4.0 and 4.1

2005-11-29 Thread Jakub Jelinek
On Tue, Nov 29, 2005 at 01:44:44PM +, Joern RENNECKE wrote: > No, it wasn't. The change was supposed to affect structures only. > As I understand the documentation ,the expected behaviour would be to > limit the alignment > to BIGGEST_ALIGNMENT, unless the user has specified a larger alignmen

Re: s390{,x} ABI incompatibility between gcc 4.0 and 4.1

2005-11-29 Thread Joern RENNECKE
Jakub Jelinek wrote: I have looked just at one failure, but maybe all of them are the same thing. typedef char __attribute__((vector_size (16))) v16qi; int i = __alignof__ (v16qi); with GCC 4.0 sets i to 8 (s390{,x} have BIGGEST_ALIGNMENT 64), but GCC 4.1 sets i to 16. The changes that created

s390{,x} ABI incompatibility between gcc 4.0 and 4.1

2005-11-28 Thread Jakub Jelinek
Hi! There are several g*dg/compat/ tests failing that show ABI incompatibilities: FAIL: tmpdir-g++.dg-struct-layout-1/t024 cp_compat_x_tst.o-cp_compat_y_alt.o execute FAIL: tmpdir-g++.dg-struct-layout-1/t024 cp_compat_x_alt.o-cp_compat_y_tst.o execute FAIL: tmpdir-g++.dg-struct-layout-1/t026 cp