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



             Bug #: 56726

           Summary: i386: MALLOC_ABI_ALIGNMENT is too small (usually)

    Classification: Unclassified

           Product: gcc

           Version: 4.9.0

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: target

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: c...@pobox.com





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)

+

 /* If defined, a C expression to compute the alignment given to a

    constant that is being placed in memory.  EXP is the constant

    and ALIGN is the alignment that the object would ordinarily have

Reply via email to