svn commit: r289072 - in head/contrib: libc++/src llvm/lib/Transforms/Vectorize

Ed Maste emaste at freebsd.org
Sat Oct 10 15:14:41 UTC 2015


On Oct 10, 2015 8:53 AM, "Konstantin Belousov" <kostikbel at 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 <kostikbel at 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.


More information about the svn-src-head mailing list