Re: Build failure with GCC 15 (defaults to -std=gnu23)
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Sam James <sam@gentoo.org>, pgsql-bugs@lists.postgresql.org
Date: 2024-11-17T21:18:30Z
Lists: pgsql-bugs
On Mon, Nov 18, 2024 at 9:26 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Fun. Well, now that we insist on C99 support in all branches, > I wonder whether we can just remove all the non-stdbool support. > The one thing that looks tricky is that we insist on sizeof(bool) > being 1, but are there any remaining supported platforms where > it isn't? The buildfarm doesn't have any examples. So far I have found only Apple/Darwin PPC (RIP), where this was occasionally an issue. Some projects would apparently compile with -mone-byte-bool to unbreak local assumptions, but risk breaking ABI with other libraries (as we do?). GCC filed that switch under Darwin options rather than somewhere more general... can we call that a clue that it was highly unusual? https://gcc.gnu.org/onlinedocs/gcc/Darwin-Options.html There may be a systematic way to survey ABIs from the LLVM or GCC source trees... hmm, I am no expert so take this with a grain of salt but I found where the LLVM project defines BoolWidth and BoolAlign, starting from the commit where they removed Darwin PPC support (2fe49ea0), and it looks like it was the only target ABI that overrode the default of 8 there (it had 32, meaning bits). BTW animal "alligator" has just shown the failure. Ah, yes, due to this GCC switch being flipped a couple of days ago: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=55e3bd376b2214e200fa76d12b67ff259b06c212
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Require sizeof(bool) == 1.
- 97525bc5c8ff 18.0 landed
-
If a C23 compiler is detected, try asking for C17.
- f4e8f137bfb0 10 (unreleased) landed
- 0c7171b32e64 9.2 (unreleased) landed
- 102be6634e6f 9.3 (unreleased) landed
- b1b8b8e6f141 9.4 (unreleased) landed
- 5b40ce749c6f 9.5 (unreleased) landed
- 70cf253d18da 9.6 (unreleased) landed
- 170e416034ec 11 (unreleased) landed
- 3f302f0ed06f 12 (unreleased) landed
- 59ea17c43c6c 13.19 landed
- 1fd57e5bbf87 14.16 landed
- f00c401c65af 15.11 landed
-
Fix C23 compiler warning
- f7a929a007e6 16.7 landed
- f3834c12afd8 17.3 landed
-
Rename C23 keyword
- ae145d1de677 16.7 landed
- ad89c8bda1f0 17.3 landed
-
Assume that <stdbool.h> conforms to the C standard.
- bc5a4dfcf739 18.0 landed
- 0813a5e69186 17.3 landed
- 0f6d902308a8 16.7 landed
- 94817d9d94d0 15.11 landed
- e0874080c472 14.16 landed
- 13242b64e15d 13.19 landed
- 15a89e2cc501 12 (unreleased) landed
- 0305dd3adef2 11 (unreleased) landed
-
Revise tree-walk APIs to improve spec compliance & silence warnings.
- 1c27d16e6e5c 16.0 cited