https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90569
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Florian Weimer from comment #8) > The problem is that popular mallocs do not care about ABI and return > unaligned pointers for allocations smaller than the max_align_t alignment. > As a result, __float128 support with 16-byte alignment would end up with a > potentially rather short list of supported targets (including targets which > have a 16-byte-aligned long double already). Understood. > I also found this for the first time: > > <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2293.htm> > > So if the standard moves to the weak guarantee, GCC probably shouldn't make > assumptions in the other direction. Yes, I already fixed libstdc++ to not assume the strong-alignment reading, see r265068. But this PR isn't about the alignment of allocations where the size is smaller than alignof(max_align_t). What makes my life difficult is that some mallocs (including glibc up to 2.25) do not respect GCC's new alignof(max_align_t) even for large allocations. I understand why, but it's just annoying that GCC changed max_align_t to be misleading. If the underlying malloc doesn't agree, making max_align_t lie isn't very helpful.