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] |
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] |