[Bug target/56726] i386: MALLOC_ABI_ALIGNMENT is too small (usually)

hjl.tools at gmail dot com gcc-bugzilla@gcc.gnu.org
Mon Mar 25 20:04:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56726

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hjl.tools at gmail dot com

--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> 2013-03-25 20:04:44 UTC ---
(In reply to comment #0)
> Observed malloc alignment for the i386 ABI is double POINTER_SIZE. 
> BITS_PER_WORD, the current default, is usually too small.  (It's right only on
> X32.)
> 
> Proposed patch:
> 
> --- gcc/config/i386/i386.h      (revision 197055)
> +++ gcc/config/i386/i386.h      (working copy)
> @@ -815,6 +815,14 @@
>     x86_field_alignment (FIELD, COMPUTED)
>  #endif
> 
> +/* The maximum alignment 'malloc' honors.
> +
> +   This value is taken from glibc documentation for memalign().  It may
> +   be up to double the very conservative GCC default.  This should be safe,
> +   since even the GCC 4.8 default of BIGGEST_ALIGNMENT usually worked.  */
> +
> +#define MALLOC_ABI_ALIGNMENT (POINTER_SIZE * 2)
> +

This isn't correct for x32, whose pointer size is 4 bytes with malloc
aligned to 16 bytes.



More information about the Gcc-bugs mailing list