On Oct 10, 2015 8:53 AM, "Konstantin Belousov" <kostik...@gmail.com> wrote: > > On Sat, Oct 10, 2015 at 12:24:33PM +0000, Ed Maste wrote: > > On 10 October 2015 at 12:03, Konstantin Belousov <kostik...@gmail.com> wrote: > > >> The declaration is extern ostream cout; which correctly has 8 byte alignment. > > > The alignment of the declaration does not matter, most likely. > > > I am not sure what you mean by saying that 8 byte alignment is desirable, > > > while compiler generates accesses (movdqa) which assume 16-byte alignment. > > > > I mean that this object is naturally expected to have 8-byte > > alignment. In previous versions of libc++.so shipped with FreeBSD it > > did, and can't be changed now (cout comes from the binary itself, via > > a copy relocation). > No, the natural alignment for char[] is 1, while ABI requires an array > longer than 15 bytes to have 16-bytes alignment.
Right, but the proper alignment for ostream is 8; it's only because of the slightly bizarre definition as a char array that we end up with this 16 byte ABI alignment. _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"