In this commit: > 2009-05-08 Bruno Haible <br...@clisp.org> > > New module 'alignof'. > * lib/alignof.h: New file. > * modules/alignof: New file. > * lib/malloca.h: Include alignof.h. > (sa_alignof): Remove macro. > (sa_alignment_*): Use the alignof macro. > * modules/malloca (Depends-on): Add alignof.
the special cases for AIX cc,xlc and HP-UX cc are not right in general. They are only right in the context of malloca.h. I've reverted the malloca related part of that commit and applied this fix: 2009-05-12 Bruno Haible <br...@clisp.org> Fix alignof macro. * lib/alignof.h (alignof): Remove special cases for AIX and HP-UX vendor compilers that are always correct. *** lib/alignof.h.orig 2009-05-13 03:20:03.000000000 +0200 --- lib/alignof.h 2009-05-13 03:18:00.000000000 +0200 *************** *** 26,39 **** #elif defined __cplusplus template <class type> struct alignof_helper { char __slot1; type __slot2; }; # define alignof(type) offsetof (alignof_helper<type>, __slot2) - #elif defined __hpux - /* Work around a HP-UX 10.20 cc bug with enums constants defined as offsetof - values. */ - # define alignof(type) (sizeof (type) <= 4 ? 4 : 8) - #elif defined _AIX - /* Work around an AIX 3.2.5 xlc bug with enums constants defined as offsetof - values. */ - # define alignof(type) (sizeof (type) <= 4 ? 4 : 8) #else # define alignof(type) offsetof (struct { char __slot1; type __slot2; }, __slot2) #endif --- 26,31 ----