uweigand added inline comments.
================ Comment at: lib/Headers/__stddef_max_align_t.h:40 __attribute__((__aligned__(__alignof__(long double)))); +#ifdef __i386__ + __float128 __clang_max_align_nonce3 ---------------- jyknight wrote: > Can you fix clang to consistently define `__SIZEOF_FLOAT128__` in > InitPreprocessor alongside the rest of the SIZEOF macros? > > And then use that to determine whether to add float128 to the union? This > change, as is, will break on any target which is i386 but doesn't define > __float128, e.g. i386-unknown-unknown. > > The only additional target which will be modified with that (that is: the > only other target which has a float128 type, but for which max_align isn't > already 16) is systemz-*-linux. > > But I think that's actually indicating a pre-existing bug in the SystemZ > config -- it's configured for a 16-byte long double, with 8-byte alignment, > but the ABI doc seems to call for 16-byte alignment. +Ulrich for comment on > that. That's a bug in the ABI doc which we'll fix once we get around to releasing an updated version. long double on SystemZ must be 8-byte aligned, which is the maximum alignment of all standard types on Z, and this was chosen because historically the ABI only guarantees an 8-byte stack alignment, so 16-byte aligned standard types would be awkward. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D55057/new/ https://reviews.llvm.org/D55057 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits