AIX

AIX

Connect with fellow AIX users and experts to gain knowledge, share insights, and solve problems.


#Power
 View Only

Compiler xlC: alignment of double-member in structure

  • 1.  Compiler xlC: alignment of double-member in structure

    Posted Thu April 08, 2010 01:59 AM

    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