Re: Windows build warnings

Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>

From: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>
To: Daniel Gustafsson <daniel@yesql.se>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Alvaro Herrera <alvherre@alvh.no-ip.org>, Greg Nancarrow <gregn4422@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2021-11-24T10:20:00Z
Lists: pgsql-hackers
Daniel Gustafsson <daniel@yesql.se> writes:

> On 22 Nov 2021, at 16:40, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
>> I can't find anything that is providing a non-empty definition of
>> PG_USED_FOR_ASSERTS_ONLY (a/k/a pg_attribute_unused) for anything
>> except GCC.  
>
> It's supported in clang as well per the documentation [0] in at least some
> configurations or distributions:
>
> 	"The [[maybe_unused]] (or __attribute__((unused))) attribute can be
> 	used to silence such diagnostics when the entity cannot be removed.
> 	For instance, a local variable may exist solely for use in an assert()
> 	statement, which makes the local variable unused when NDEBUG is
> 	defined."

Should we change the compiler checks for attributes in c.h to include
`|| __has_attribute(…)`, so that we automatically get them on compilers
that support that (particularly clang)?

- ilmari



Commits

  1. Disable unused-variable warning C4101 in MSVC

  2. Remove PF_USED_FOR_ASSERTS_ONLY from variables in general use

  3. Fix handling of non-key columns get_index_column_opclass()