Re: pgsql: Allow building with MSVC and Strawberry perl - Mailing list pgsql-committers

From Andres Freund
Subject Re: pgsql: Allow building with MSVC and Strawberry perl
Date
Msg-id 20221125233331.dh4yrd76a3mnwj4s@awork3.anarazel.de
Whole thread Raw
In response to Re: pgsql: Allow building with MSVC and Strawberry perl  (Andrew Dunstan <andrew@dunslane.net>)
Responses Re: pgsql: Allow building with MSVC and Strawberry perl
List pgsql-committers
Hi,

On 2022-11-25 17:11:51 -0500, Andrew Dunstan wrote:
> On 2022-11-25 Fr 15:38, Andrew Dunstan wrote:
> > Allow building with MSVC and Strawberry perl
> >
> > Strawberry uses __builtin_expect which Visual C doesn't have. For this
> > case define it as a noop. Solution taken from vim sources.

FWIW, to get a newer strawberry perl to work with msvc we need more than
this. At the very least -DNO_THREAD_SAFE_LOCALE, see

https://postgr.es/m/20220130221659.tlyr2lbw3wk22owg%40alap3.anarazel.de



>
> Argh! drongo doesn't seem to like this. I thought I'd tested it.
>
> A little further googling suggests that instead of
>
>
> #define __builtin_expect(expr, val) (expr)
>
>
> we should probably have something like
>
>
> #define __builtin_expect(expr, val) ((expr) == (val))

That doesn't seem right - val isn't something to compare to, it's the expected
return value. This afaict would compute bogus value in a number of scenarios.

Note that perl's own definition is:

#ifdef HAS_BUILTIN_EXPECT
#  define EXPECT(expr,val)                  __builtin_expect(expr,val)
#else
#  define EXPECT(expr,val)                  (expr)
#endif

So we really should be able to get away with
#define __builtin_expect(expr, val) (expr)


I don't see why drongo's problems would go away with
#define __builtin_expect(expr, val) ((expr) == (val))
anyway?


FWIW a meson build with msvc 2019 and strawberry perl 5.32 builds fine with
#define __builtin_expect(expr, val) (expr)

Greetings,

Andres Freund



pgsql-committers by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: pgsql: Allow building with MSVC and Strawberry perl
Next
From: Andres Freund
Date:
Subject: Re: pgsql: Allow building with MSVC and Strawberry perl