On Thu, Sep 12, 2013 at 10:29 PM, Junio C Hamano <gits...@pobox.com> wrote:
> Jeff King <p...@peff.net> writes:
>> I think there are basically three classes of solution:
>> 1. Declare __NO_INLINE__ everywhere. I'd worry this might affect other
>> environments, who would then not inline and lose performance (but
>> since it's a non-standard macro, we don't really know what it will
>> do in other places; possibly nothing).
>> 2. Declare __NO_INLINE__ on mingw. Similar to above, but we know it
>> only affects mingw, and we know the meaning of NO_INLINE there.
>> 3. Try to impact only the uses as a function pointer (e.g., by using
>> a wrapper function as suggested in the thread).
>> Your patch does (1), I believe. Junio's patch does (3), but is a
>> maintenance burden in that any new callsites will need to remember to do
>> the same trick.
Well, if by "everywhere" in (1) you mean "on all platforms" then
you're right. But my patch does not define __NO_INLINE__ globally, but
only at the time string.h / strings.h is included. Afterwards
__NO_INLINE__ is undefined. In that sense, __NO_INLINE__ is not
> Agreed. If that #define __NO_INLINE__ does not appear in the common
> part of our header files like git-compat-util.h but is limited to
> somewhere in compat/, that would be the perfect outcome.
It's not that easy to move the definition of __NO_INLINE__ into
compat/ because git-compat-util.h includes string.h / strings.h before
anything of compat/. More over, defining __NO_INLINE__ in somewhere in
compat/ would not limit its definition to the string.h / strings.h
headers only. So how about something like this on top of my original
@@ -85,12 +85,16 @@
#define _NETBSD_SOURCE 1
#define _SGI_SOURCE 1
#define __NO_INLINE__ /* do not inline strcasecmp() */
#include <strings.h> /* for strcasecmp() */
#ifdef WIN32 /* Both MinGW and MSVC */
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html