http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56726
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> 2013-03-25 22:07:18 UTC --- (In reply to comment #2) > I'm a bit skeptical of that. Glibc malloc alignment is 2 * sizeof(void*), and > void* in X32 is 32 bits. Unless X32 code uses the x86_64 libc, I am confused. > > PS: Hi, HJ Hi Chip, The current glibc has #ifndef MALLOC_ALIGNMENT # if !SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_16) /* This is the correct definition when there is no past ABI to constrain it. Among configurations with a past ABI constraint, it differs from 2*SIZE_SZ only on powerpc32. For the time being, changing this is causing more compatibility problems due to malloc_get_state and malloc_set_state than will returning blocks not adequately aligned for long double objects under -mlong-double-128. */ # define MALLOC_ALIGNMENT (2 * SIZE_SZ < __alignof__ (long double) \ ? __alignof__ (long double) : 2 * SIZE_SZ) # else # define MALLOC_ALIGNMENT (2 * SIZE_SZ) # endif #endif