Originally posted by: SystemAdmin
Hi,
I have the following problem on AIX (compiler xlC) with alignment of double-member in structure (see attached file)
1.1. Compilation and running on AIX 5.3 (compiler xlC V8.0)
> xlC -q64 -qwarn64 align1.cpp
> ./a.out
AIX ep5710g 3 5 00C58FE04C00
IBM XL C/C++ Enterprise Edition V8.0 for AIX
Version: 08.00.0000.0014
instL.m_long : struct sizeof = 16, member sizeof = 8, member offset = 8, struct ptr = fffffffffff3eb0, member ptr = fffffffffff3eb8
instD.m_double: struct sizeof = 12, member sizeof = 8, member offset = 4, struct ptr = fffffffffff3ed0, member ptr = fffffffffff3ed4
1.2. Compilation and running on AIX 6.1 (compiler xlC V10.1)
> xlC -q64 -qwarn64 align1.cpp
AIX ep5512b 1 6 000497A2D900
IBM XL C/C++ for AIX, V10.1
Version: 10.01.0000.0000
instL.m_long : struct sizeof = 16, member sizeof = 8, member offset = 8, struct ptr = fffffffffff0790, member ptr = fffffffffff0798
instD.m_double: struct sizeof = 12, member sizeof = 8, member offset = 4, struct ptr = fffffffffff07b0, member ptr = fffffffffff07b4
1.3. Compilation and running on HP-UX v2 (compiler xlC aCC A.06.15)
HP-UX hpx418 B.11.23 U ia64 1139467043 unlimited-user license
aCC: HP C/aC++ B3910B A.06.15
May 16 2007 instL.m_long : struct sizeof = 16, member sizeof = 8, member offset = 8, struct ptr = 9ffffffffffec9e0, member ptr = 9ffffffffffec9e8
instD.m_double: struct sizeof = 16, member sizeof = 8, member offset = 8, struct ptr = 9ffffffffffec9f0, member ptr = 9ffffffffffec9f8
2. Analysis
We can see some problem on AIX compiler with m_double:
its sizeof = 8, but its offset = 4
and
its pointer is not aligned to 8 bytes
P.S. No problem with double-member on HP-UX compiler.
Alex Vinokur
#AIX-Forum