Further fix extended alignment for older g++.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 29 Jan 2026 21:16:36 +0000 (16:16 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 29 Jan 2026 21:16:36 +0000 (16:16 -0500)
Commit 6ceef9408 was still one brick shy of a load, because it caused
any usage at all of PGIOAlignedBlock or PGAlignedXLogBlock to fail
under older g++.  Notably, this broke "headerscheck --cplusplus".
We can permit references to these structs as abstract structs though;
only actual declaration of such a variable needs to be forbidden.

Discussion: https://www.postgresql.org/message-id/3119480.1769189606@sss.pgh.pa.us

src/include/c.h

index 48e4087c09cfcfbe254d30ecd9713a21ab80df8d..c443e75b89f28cbb7810857a6da2b3ceb05f0c34 100644 (file)
@@ -1140,6 +1140,12 @@ typedef struct PGAlignedXLogBlock
    alignas(PG_IO_ALIGN_SIZE) char data[XLOG_BLCKSZ];
 } PGAlignedXLogBlock;
 
+#else                          /* (g++ < 9) */
+
+/* Allow these types to be used as abstract types when using old g++ */
+typedef struct PGIOAlignedBlock PGIOAlignedBlock;
+typedef struct PGAlignedXLogBlock PGAlignedXLogBlock;
+
 #endif                         /* !(g++ < 9) */
 
 /* msb for char */