Re: pg_attribute_noreturn(), MSVC, C11

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Andres Freund <andres@anarazel.de>, pgsql-hackers@lists.postgresql.org
Cc: pgsql-hackers@postgresql.org, Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>, Thomas Munro <thomas.munro@gmail.com>
Date: 2025-03-14T08:32:51Z
Lists: pgsql-hackers
On 13.03.25 13:43, Peter Eisentraut wrote:
> I committed the first two patches (squashed together) (about 
> pg_noreturn).  I had to make one change: I put back the GCC fallback 
> that I had removed between v1 and v2.  This is needed for GCC versions 
> before C11 became the default (gcc 5) and also for situations like 
> buildfarm member mylodon that builds with -std=c99 explicitly. 
> (Otherwise, that configuration would get a bunch of compiler warnings 
> about uninitialized variables etc.)  I also added the additional comment 
> about placement that you had requested.
> 
> I'm going to postpone the remaining two patches (about pg_nodiscard). 
> After experimenting a bit more, I'm less sure about what the correct 
> placement of C23 attributes is meant to be, and without understanding 
> that, I fear this would make the earlier question about the correct 
> placement of pg_noreturn unnecessarily more complicated.  This can be a 
> future project.

After some reflection, I committed the middle patch ("Swap order of 
extern/static and pg_nodiscard") after all.  The code comment about the 
provenance of the name needed updating anyway, and it made sense in that 
context to adjust the order to make it more future-proof and make it 
consistent with pg_noreturn.

I'll leave the last patch out for now, though.




Commits

  1. Use standard C23 and C++ attributes if available

  2. Swap order of extern/static and pg_nodiscard

  3. pg_noreturn to replace pg_attribute_noreturn()