develooper Front page | perl.perl5.porters | Postings from September 2012

Re: unhappy darwin -Dusemorebits (was Re: Smoke [5.17.4]v5.17.3-184-g699aa44 FAIL(F) darwin 12.1.0 (Intel Core 2 Duo/))

From:
Reini Urban
Date:
September 5, 2012 18:09
Subject:
Re: unhappy darwin -Dusemorebits (was Re: Smoke [5.17.4]v5.17.3-184-g699aa44 FAIL(F) darwin 12.1.0 (Intel Core 2 Duo/))
Message ID:
CAHiT=DEEit+GitW8hzubHynd-EoOgZ5OLLzK0Qk8jNhjihCxqQ@mail.gmail.com
On Tue, Sep 4, 2012 at 2:32 PM, Andy Dougherty <doughera@lafayette.edu> wrote:
> On Tue, 4 Sep 2012, Reini Urban wrote:
>
>> On Tue, Sep 4, 2012 at 9:02 AM, Andy Dougherty <doughera@lafayette.edu> wrote:
>> > diff --git a/Configure b/Configure
>> > index a1ba981..7fa1804 100755
>> > --- a/Configure
>> > +++ b/Configure
>> > @@ -19022,11 +19022,10 @@ Revision='$Revision'
>> >
>> >  : check for alignment requirements
>> >  echo " "
>> > -case "$usecrosscompile$multiarch" in
>> > +case "$usecrosscompile" in
>> >  *$define*)
>> >         $cat <<EOM
>> > -You seem to be either cross-compiling or doing a multiarchitecture build,
>> > -skipping the memory alignment check.
>> > +You seem to be cross-compiling.  Skipping the memory alignment check.
>> >
>> >  EOM
>> >         case "$alignbytes" in
>> > @@ -19064,6 +19063,17 @@ EOCP
>> >                         dflt='8'
>> >                         echo "(I can't seem to compile the test program...)"
>> >                 fi
>> > +               case "$multiarch" in
>> > +               *$define*)
>> > +                       : The usual safe value is 8, but Darwin with -Duselongdouble
>> > +                       : needs 16.  Hence, we will take 8 as a minimum, but allow
>> > +                       : Configure to pick a larger value if needed.
>> > +                       if $test "$dflt" -lt 8; then
>> > +                           dflt='8'
>> > +                               echo "Setting alignment to 8 for multiarch support.">&4
>> > +                       fi
>> > +                       ;;
>> > +               esac
>> >                 ;;
>> >         *) dflt="$alignbytes"
>> >                 ;;
>>
>> Doesn't solaris with their cc/CC also requires 16?
>
> I don't understand.  This patch is only supposed to set a minimum in the
> multiarch case, which is normally just darwin (or NeXT or Rhapsody).  The
> normal alignbytes test run by Solaris should be unaffected.

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.

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.
-- 
Reini Urban
http://cpanel.net/   http://www.perl-compiler.org/



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About