This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: x86_64: Should the -mavx* options affected __alignof__ (max_align_t)?
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Florian Weimer <fweimer at redhat dot com>
- Cc: Andrew Haley <aph at redhat dot com>, Joseph Myers <joseph at codesourcery dot com>, GCC <gcc at gcc dot gnu dot org>
- Date: Thu, 2 Apr 2015 04:13:14 -0700
- Subject: Re: x86_64: Should the -mavx* options affected __alignof__ (max_align_t)?
- Authentication-results: sourceware.org; auth=none
- References: <55105B5B dot 50107 at redhat dot com> <alpine dot DEB dot 2 dot 10 dot 1503231831300 dot 14930 at digraph dot polyomino dot org dot uk> <55105E53 dot 8020002 at redhat dot com> <551CFD38 dot 9040200 at redhat dot com> <551D0060 dot 1020805 at redhat dot com> <551D01E5 dot 9070405 at redhat dot com> <CAMe9rOoxjp1TFUgg493r_1LT9S9ZH=1D-+riO3f32A_WqcYN3A at mail dot gmail dot com> <551D2319 dot 4010905 at redhat dot com>
On Thu, Apr 2, 2015 at 4:08 AM, Florian Weimer <fweimer@redhat.com> wrote:
> On 04/02/2015 01:06 PM, H.J. Lu wrote:
>> On Thu, Apr 2, 2015 at 1:46 AM, Florian Weimer <fweimer@redhat.com> wrote:
>>> On 04/02/2015 10:40 AM, Andrew Haley wrote:
>>>
>>>> So, max_align_t is an object type, and therefore malloc returns a
>>>> pointer suitable for max_align_t.
>>>
>>> Then the GCC definition of max_align_t is incorrect, it should be 8 on
>>> x86_64 GNU/Linux, because traditionally, that's what mallocs implement
>>> for this architecture. (dlmalloc in glibc is an exception.)
>>>
>>
>> x86-64 psABI specifies that a memory >= 16 bytes is 16-byte aligned.
>> If malloc doesn't do it, it is a broken.
>
> My concern is different. I think _Alignof (max_align_t) == 16 (as it is
> in GCC now) implies that malloc return values for sizes less than 16
> bytes are 16-byte-aligned, too, which is not required by the x86-64 psABI.
>
If you take this way, malloc of 1 byte can return 1-byte aligned memory.
--
H.J.