Re: remove pg_restrict workaround

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Jelte Fennema-Nio <postgres@jeltef.nl>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-01-03T17:14:45Z
Lists: pgsql-hackers
On 03.01.26 00:23, Jelte Fennema-Nio wrote:
> On Wed, 29 Oct 2025 at 08:04, Peter Eisentraut <peter@eisentraut.org> wrote:
>> Committed with a backward compatibility define.
> 
> I'm working on adding a C++ extension module to my copyObject
> patchset[1]. But turns out that this change has completely broken
> compiling C++ extensions on MSVC. This is happening due to
> __declspec(restrict) being replaced by __declspec(__restrict), which
> the original comments also mentioned as the reason for having our own
> flavor. This replacement then makes the core of a corecrt_malloc.h
> MSVC header invalid[2].

meson.build already contains a hint about the solution:

# Even though restrict is in C99 and should be supported by all
# supported compilers, this indirection is useful because __restrict
# also works in C++ in all supported compilers.  (If not, then we
# might have to write a real test.)  (restrict is not part of the C++
# standard.)
cdata.set('restrict', '__restrict')

Or maybe instead of writing a test, we should add something like this to 
c.h:

#ifdef __cplusplus
#ifdef __GNUC__
#define restrict __restrict
#else
#define restrict
#endif
#endif





Commits

  1. Revert "Replace pg_restrict by standard restrict"

  2. Replace pg_restrict by standard restrict

  3. Remove meaninglist restrict qualifiers