On Wed, Sep 05, 2012 at 08:09:26PM -0500, Reini Urban wrote: > Sure. But this is merely a documentation issue for cross compilers. > > And instead of bashing darwin it should be noted that darwin and > solaris is right, > and linux/freebsd are wrong assuming nothing is done nowadays with SSE. That default is intended to apply to cross compilation, and provides a vaguely sane value for multiarch configurations (which my darwin builds usually aren't anyway.) As to Linux, if I run Configure with usemorebits: tony@mars:.../git/perl$ ./Configure -des -Dusedevel -Dusemorebits ... new one before you run Configure -- this will help you with most of the policy defaults. tony@mars:.../git/perl$ grep alignbytes config.sh alignbytes='16' tony@mars:.../git/perl$ uname -a Linux mars 2.6.32-5-amd64 #1 SMP Mon Jan 16 16:22:28 UTC 2012 x86_64 GNU/Linux I get a sane value. Note that clang only appears to be using the SSE copy on structures that have 16-byte alignment. > So 16 bytes is a better default than 8 on 64-bit machines. If your > machine has SSE > (and I bet it has) and you compile your perl with it it will be > happily prefering 16. > > Summary: 8 is an unsafe default value. The wording is misleading. Don't forget, with Andy's changes we ask the compiler what the alignment should be. If the compiler gets it wrong there's not much we can do about it. For cross compilation, at this point the targets are probably small enough that they're not likely to require 16-byte alignment. Tony