Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 24, 2009, 22:03 UTC
- Message-ID
- <7vy6p86f9y.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <YE4QMh4rA1r2X3ZG5TvGJZspm0UdCWyP-r6KFthp8PuFewAhHPJ3GQ@cipher.nrlssc.navy.mil>
Brandon Casey <brandon.casey.ctr@nrlssc.navy.mil> writes:
Show 19 quoted lines
> 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
#endifand use them, instead of __GNUC__, to enable the inline assembly used in the block sha1 codepath.