Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)
Show 39 quoted lines
> Brandon Casey <brandon.casey.ctr@nrlssc.navy.mil> writes:
>
>> Nicolas is right, the code compiles and executes correctly on Solaris as-is.
>>
>> Here is the state of the two unsubmitted optimization patches:
>>
>> 1) Change things like __i386__ to __i386 since GCC defines both, but
>> SUNWspro only defines __i386.
>>
>> This works correctly in my testing. I'm assuming that a test for
>> __amd64 is not necessary and expect that __x86_64 is set whenever
>> __amd64 is set.
>>
>> 2) Set __GNUC__ on SUNWspro v5.10 and up.
>>
>> This compiles correctly and passes the test suite, but produces
>> warnings for __attribute__'s that sun's compiler has not implemented.
>> This produces a very noisy compile.
>>
>> I've wanted to do some performance testing to see whether this actually
>> produces an _improvement_. I'll try today.
>
> Thanks.
>
> I agree (1) would be a reasonable thing to do.
>
> (2) feels very iffy/hacky. As far as I can see, by defining __GNUC__,
> Solaris would also use builtin-alloca in compat/regex/regex.c, which may
> or may not be what you want.
>
> It might be cleaner to do:
>
> #if __GNUC__ || SUNWspro > 5.10
> #define GCC_LIKE_INLINE_ASM
> #define GCC_LIKE_STMT_EXPR
> #endif
>
> and use them, instead of __GNUC__, to enable the inline assembly used in
> the block sha1 codepath.
Yes, this sounds saner, but alas it will have to be tomorrow...
-brandon