This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: x86_64: Should the -mavx* options affected __alignof__ (max_align_t)?


On Thu, 2 Apr 2015, Florian Weimer 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.

Right back to C90 (DR#075), malloc of any size has been required to return 
a pointer suitably aligned for all types that can be defined in C90 (such 
as long double).  ABIs can only be understood in conjunction with the 
language standard requirements.  If malloc fails to return memory suitably 
aligned for long double, that's a malloc bug.

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]