cpluspluscheck vs ICU again

John Naylor <johncnaylorls@gmail.com>

From: John Naylor <johncnaylorls@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Andres Freund <andres@anarazel.de>, Peter Eisentraut <peter@eisentraut.org>
Date: 2025-07-02T07:01:13Z
Lists: pgsql-hackers

Attachments

On Tue, Jul 1, 2025 at 9:24 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Ha, indeed you are right.  On my RHEL9 box, it's kinda drowned out
> by complaints about
>
> /usr/include/c++/11/bits/range_access.h:109:3: error: template with C linkage
>   109 |   template<typename _Tp> _Tp* end(valarray<_Tp>&) noexcept;
>       |   ^~~~~~~~
> /tmp/headerscheck.u5CrRM/test.cpp:1:1: note: ‘extern "C"’ linkage started here
>     1 | extern "C" {
>       | ^~~~~~~~~~

After pushing my fix, I looked into this, and CI works around this by
disabling ICU. A proper fix was discussed here, but it trailed off:

https://www.postgresql.org/message-id/flat/20230311033727.koa4saxy5wyquu6s%40awork3.anarazel.de#03346c63050bbc69dfca8981a5698e4a

I came up with the attached -- Andres, Peter, does this match your recollection?

--
John Naylor
Amazon Web Services

Commits

  1. Update ICU C++ API symbols

  2. Hide ICU C++ APIs from pg_locale.h

  3. Remove implicit cast from 'void *'

  4. Inline CRC computation for small fixed-length input on x86