Hi,
On Fri, Nov 07, 2025 at 05:18:41PM +0000, Dagfinn Ilmari Mannsåker wrote:
> Peter Eisentraut <peter@eisentraut.org> writes:
>
> > On 07.11.25 16:03, Bertrand Drouvot wrote:
> >
> >> +#define pg_attribute_deprecated(msg) [[deprecated(msg)]]
> >> +#elif defined(__GNUC__) || defined(__clang__)
> >
> > The __clang__ part is not needed, because clang defines __GNUC__ also.
>
> Or, to avoid having to know this, how about __has_attribute(deprecated)?
>
Thanks for looking at it! I did some research and found that some older GCC
versions did support the deprecated attribute (for example GCC 4.5 added support
to the extra message, see [1]) but not __has_attribute (introduced in GCC 5, see
[2]). So for example here, we'd have a 4.5-4.9 gap.
Then to be on the safe side of things I think it's better to not use
__has_attribute() for the deprecated attribute.
I added a comment in the attached though.
[1]: https://gcc.gnu.org/gcc-4.5/changes.html
[2]: https://gcc.gnu.org/gcc-5/changes.html
Regards,
--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com