On 19/01/18 21:20, Jeff King wrote: > On Fri, Jan 19, 2018 at 08:28:48PM +0000, Ramsay Jones wrote: > >>> diff --git a/remote.c b/remote.c >>> index 4e93753e1..c18f9de7f 100644 >>> --- a/remote.c >>> +++ b/remote.c >>> @@ -11,6 +11,10 @@ >>> #include "mergesort.h" >>> #include "argv-array.h" >>> >>> +#if defined (__TANDEM) >>> +#define __attribute(a) >>> +#endif >>> + >> >> Hmm, the only use of __attribute() I can find is in compat/regex/. >> In particular, there is no use of __attribute() in regex.c. >> [__attribute__() is used in regex.c] >> >> Is this an old patch which is no longer required? >> >> puzzled. heh, I only just noticed that I (twice) wrote regex.c when I meant remote.c instead. Hopefully, that didn't cause too much confusion! > I'm puzzled, too. The actual gcc thing is __attribute__(), and we > already turn that into a noop via macro expansion if __GNUC__ is not > defined (in git-compat-util.h, but see below). > > __attribute(), without the trailing underscores, is used internally by > the regex compat code (but it also converts that into a noop on non-GNUC > platforms)> Indeed. > However the logic in git-compat-util is weird: > > #if defined(__HP_cc) && (__HP_cc >= 61000) > #define NORETURN __attribute__((noreturn)) > #define NORETURN_PTR > #elif defined(__GNUC__) && !defined(NO_NORETURN) > #define NORETURN __attribute__((__noreturn__)) > #define NORETURN_PTR __attribute__((__noreturn__)) > #elif defined(_MSC_VER) > #define NORETURN __declspec(noreturn) > #define NORETURN_PTR > #else > #define NORETURN > #define NORETURN_PTR > #ifndef __GNUC__ > #ifndef __attribute__ > #define __attribute__(x) > #endif > #endif > #endif > > Most of the conditional is dealing with NORETURN, but then we stick the > __attribute()__ handling in the "else" block. Is it possible that this > platform triggers __HP_cc, but doesn't actually understand > __attribute__? That seems unlikely. However, that conditional looks a mess ... ;-) ATB, Ramsay Jones