Re: [PATCH 2/2] xdiff: optimize xdl_hash_record_verbatim
- From
Alexander Monakov <amonakov@ispras.ru>
- Date
- Jul 28, 2025, 20:57 UTC
- Message-ID
- <3405f274-cef1-b361-7424-840dc55b48a1@ispras.ru>
- In-Reply-To
- <xmqq5xfcujjn.fsf@gitster.g>
On Mon, 28 Jul 2025, Junio C Hamano wrote:
Show 21 quoted lines
> Alexander Monakov <amonakov@ispras.ru> writes:
>
> > +/*
> > + * Compiler reassociation barrier: pretend to modify X and Y to disallow
> > + * changing evaluation order with respect to following uses of X and Y.
> > + */
> > +#ifdef __GNUC__
> > +#define REASSOC_FENCE(x, y) asm("" : "+r"(x), "+r"(y))
> > +#else
> > +#define REASSOC_FENCE(x, y)
> > +#endif
>
> With gcc we can build, but with clang, we unfortunately get this:
>
> $ make CC=clang DEVELOPER=YesPlease
> xdiff/xutils.c:330:4: error: extension used [-Werror,-Wlanguage-extension-token]
> 330 | REASSOC_FENCE(c0, ha);
> | ^
> xdiff/xutils.c:302:29: note: expanded from macro 'REASSOC_FENCE'
> 302 | #define REASSOC_FENCE(x, y) asm("" : "+r"(x), "+r"(y))
> | ^Sorry, wasn't aware that Clang would warn. The solution is to spell 'asm' with double underscores, __asm__. I'll make this change if I post a v2.
Thanks. Alexander