This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GCC 3.2


On Samstag, 27. Juli 2002 00:50, Mark Mitchell wrote:
> I have created the GCC 3.2 branch.
>
> Once Jakub indicates that the ABI patchset has been checked in, I will
> start rolling the 3.2 prerelease.

Nice :-).

On the ABI patches, shouldn't __GXX_ABI_VERSION be bumped now? I would also 
request this macro to become a generic one, so you can use it while 
preprocessing C and assembly, often used for bridging code like eg. in 
mozilla.

Another thing, Kevin Hendricks, one of the OpenOffice developers, sent me a 
short test program with all the alignment stuff the OO people had to change 
between 2.9x and 3.x. Would some of the C++ people take a close look at this 
code? Note that the current ABI patches fixed already 2 problems the OO 
people had to workaround with gcc-3.1, so maybe the others are ABI bugs as 
well?

For example on powerpc-linux-gnu, with gcc-3.1.1:

[fsirl@entropy:~]$ g++ -O2 datatest.cxx -o datatest_nofix
[fsirl@entropy:~]$ ./datatest_nofix
> sizeof(AlignSize_Impl) = 16; __alignof__ (AlignSize_Impl) = 8
> sizeof(M) = 8; __alignof__ (M) = 4
> sizeof(N) = 8; __alignof__ (N) = 4
### sizeof(N) = 8 instead of expected 12!!!
### OFFSET_OF(N, p) = 6 instead of expected 8!!!
> sizeof(N2) = 12; __alignof__ (N2) = 4
> sizeof(O) = 16; __alignof__ (O) = 8
> sizeof(D) = 8; __alignof__ (D) = 4
> sizeof(C1) = 2; __alignof__ (C1) = 2
> sizeof(C2) = 8; __alignof__ (C2) = 4
> sizeof(C3) = 24; __alignof__ (C3) = 8
> sizeof(C4) = 32; __alignof__ (C4) = 8
### sizeof(C4) = 32 instead of expected 40!!!
### OFFSET_OF(C4, n4) = 20 instead of expected 24!!!
### OFFSET_OF(C4, d4) = 24 instead of expected 32!!!
> sizeof(C5) = 48; __alignof__ (C5) = 8
### sizeof(C5) = 48 instead of expected 56!!!
### OFFSET_OF(C5, n5) = 32 instead of expected 40!!!
### OFFSET_OF(C5, b5) = 40 instead of expected 48!!!
> sizeof(C6) = 64; __alignof__ (C6) = 8
### sizeof(C6) = 64 instead of expected 72!!!
### OFFSET_OF(C6, b6) = 56 instead of expected 64!!!
> sizeof(O2) = 24; __alignof__ (O2) = 8
> sizeof(Char3) = 3; __alignof__ (Char3) = 1
> sizeof(P) = 16; __alignof__ (P) = 8
### sizeof(P) = 16 instead of expected 24!!!
> sizeof(second) = 4; __alignof__ (second) = 4

And now with gcc-3.2:

[fsirl@entropy:~]$ ~/obj/gcc32/gcc/xgcc -B ~/obj/gcc32/gcc/ -O2 datatest.cxx 
-o datatest_nofix
[fsirl@entropy:~]$ ./datatest_nofix
> sizeof(AlignSize_Impl) = 16; __alignof__ (AlignSize_Impl) = 8
> sizeof(M) = 8; __alignof__ (M) = 4
> sizeof(N) = 12; __alignof__ (N) = 4
> sizeof(N2) = 12; __alignof__ (N2) = 4
> sizeof(O) = 16; __alignof__ (O) = 8
> sizeof(D) = 8; __alignof__ (D) = 4
> sizeof(C1) = 2; __alignof__ (C1) = 2
> sizeof(C2) = 8; __alignof__ (C2) = 4
> sizeof(C3) = 24; __alignof__ (C3) = 8
> sizeof(C4) = 32; __alignof__ (C4) = 8
### sizeof(C4) = 32 instead of expected 40!!!
### OFFSET_OF(C4, n4) = 20 instead of expected 24!!!
### OFFSET_OF(C4, d4) = 24 instead of expected 32!!!
> sizeof(C5) = 48; __alignof__ (C5) = 8
### sizeof(C5) = 48 instead of expected 56!!!
### OFFSET_OF(C5, n5) = 32 instead of expected 40!!!
### OFFSET_OF(C5, b5) = 40 instead of expected 48!!!
> sizeof(C6) = 64; __alignof__ (C6) = 8
### sizeof(C6) = 64 instead of expected 72!!!
### OFFSET_OF(C6, b6) = 56 instead of expected 64!!!
> sizeof(O2) = 24; __alignof__ (O2) = 8
> sizeof(Char3) = 3; __alignof__ (Char3) = 1
> sizeof(P) = 24; __alignof__ (P) = 8
> sizeof(second) = 4; __alignof__ (second) = 4

If you add -DADJUST_ALIGN to the compile flags, the OO workarounds are turned 
on the the testcase passes with gcc-3.1.1 and gcc-3.2.

Franz.

Attachment: datatest.cxx
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]