Revert workarounds for -Wmissing-braces false positives on old GCC
authorPeter Eisentraut <[email protected]>
Thu, 20 Mar 2025 10:25:58 +0000 (11:25 +0100)
committerPeter Eisentraut <[email protected]>
Thu, 20 Mar 2025 10:25:58 +0000 (11:25 +0100)
We have collected several instances of a workaround for GCC bug 53119,
which caused false-positive compiler warnings.  This bug has long been
fixed, but was still seen on the buildfarm, most recently on lapwing
with gcc (Debian 4.7.2-5).  (The GCC bug tracker mentions that a fix
was backported to 4.7.4 and 4.8.3.)

That compiler no longer runs warning-free since commit 6fdd5d95634, so
we don't need to keep these workarounds.  And furthermore, the
consensus appears to be that we don't want to keep supporting that era
of platform anymore at all.

This reverts the following commits:

d937904cce6a3d82e4f9c2127de7b59105a134b3
506428d091760650971433f6bc083531c307b368
b449afb582bb9015bfbb85abc10ce122aef9ec70
6392f2a0968c20ecde4d27b6652703ad931fce92
bad0763a4d7be3005eae35d460c73ac4bc7ebaad
5e0c761d0a13c7b4f7c5de618ac38560d74d74d0

and makes a few similar fixes to newer code.

Discussion: https://www.postgresql.org/message-id/flat/e170d61f-01ab-4cf9-ab68-91cd1fac62c5%40eisentraut.org
Discussion: https://www.postgresql.org/message-id/flat/CA%2BTgmoYEAm-KKZibAP3hSqbTFTjUd47XtVcf3xSFDpyecXX9uQ%40mail.gmail.com

contrib/pg_prewarm/autoprewarm.c
contrib/postgres_fdw/postgres_fdw.c
src/backend/optimizer/path/costsize.c
src/backend/storage/smgr/bulk_write.c
src/bin/pg_waldump/rmgrdesc.c
src/bin/pgbench/pgbench.c
src/common/blkreftable.c
src/common/file_utils.c
src/interfaces/libpq/fe-auth-oauth-curl.c

index b45755b3347137bbb77ca129a2450d8876f3acbe..73485a2323cfbe6651b2a76330366032d296a6db 100644 (file)
@@ -798,12 +798,11 @@ apw_detach_shmem(int code, Datum arg)
 static void
 apw_start_leader_worker(void)
 {
-   BackgroundWorker worker;
+   BackgroundWorker worker = {0};
    BackgroundWorkerHandle *handle;
    BgwHandleStatus status;
    pid_t       pid;
 
-   MemSet(&worker, 0, sizeof(BackgroundWorker));
    worker.bgw_flags = BGWORKER_SHMEM_ACCESS;
    worker.bgw_start_time = BgWorkerStart_ConsistentState;
    strcpy(worker.bgw_library_name, "pg_prewarm");
@@ -840,10 +839,9 @@ apw_start_leader_worker(void)
 static void
 apw_start_database_worker(void)
 {
-   BackgroundWorker worker;
+   BackgroundWorker worker = {0};
    BackgroundWorkerHandle *handle;
 
-   MemSet(&worker, 0, sizeof(BackgroundWorker));
    worker.bgw_flags =
        BGWORKER_SHMEM_ACCESS | BGWORKER_BACKEND_DATABASE_CONNECTION;
    worker.bgw_start_time = BgWorkerStart_ConsistentState;
index 263c879026e5d44a8a778d0c844fa82b6ff7cd46..6beae0fa37f224bf4b01dc86c633d386b62ba25e 100644 (file)
@@ -3333,7 +3333,7 @@ estimate_path_cost_size(PlannerInfo *root,
        {
            RelOptInfo *outerrel = fpinfo->outerrel;
            PgFdwRelationInfo *ofpinfo;
-           AggClauseCosts aggcosts;
+           AggClauseCosts aggcosts = {0};
            double      input_rows;
            int         numGroupCols;
            double      numGroups = 1;
@@ -3357,7 +3357,6 @@ estimate_path_cost_size(PlannerInfo *root,
            input_rows = ofpinfo->rows;
 
            /* Collect statistics about aggregates for estimating costs. */
-           MemSet(&aggcosts, 0, sizeof(AggClauseCosts));
            if (root->parse->hasAggs)
            {
                get_agg_clause_costs(root, AGGSPLIT_SIMPLE, &aggcosts);
index 256568d05a29f74be965ef3cc3368793d73a635e..f6f77b8fe1938c07e7c09ccb028c6e0c70933cfc 100644 (file)
@@ -2690,13 +2690,12 @@ cost_agg(Path *path, PlannerInfo *root,
    double      output_tuples;
    Cost        startup_cost;
    Cost        total_cost;
-   AggClauseCosts dummy_aggcosts;
+   const AggClauseCosts dummy_aggcosts = {0};
 
    /* Use all-zero per-aggregate costs if NULL is passed */
    if (aggcosts == NULL)
    {
        Assert(aggstrategy == AGG_HASHED);
-       MemSet(&dummy_aggcosts, 0, sizeof(AggClauseCosts));
        aggcosts = &dummy_aggcosts;
    }
 
index ecd441f1be2e415d9d1ac3e06babb838340ec8fa..b958be15716452a84f153801c904a56f1e2ef151 100644 (file)
@@ -46,7 +46,7 @@
 
 #define MAX_PENDING_WRITES XLR_MAX_BLOCK_ID
 
-static const PGIOAlignedBlock zero_buffer = {{0}}; /* worth BLCKSZ */
+static const PGIOAlignedBlock zero_buffer = {0};   /* worth BLCKSZ */
 
 typedef struct PendingWrite
 {
index 6b8c17bb4c4ecd8be0362542978fb913450f12f4..fac509ed134e5190eed5cb3eb4a52ff35a0a14b9 100644 (file)
@@ -41,8 +41,8 @@ static const RmgrDescData RmgrDescTable[RM_N_BUILTIN_IDS] = {
 
 #define CUSTOM_NUMERIC_NAME_LEN sizeof("custom###")
 
-static char CustomNumericNames[RM_N_CUSTOM_IDS][CUSTOM_NUMERIC_NAME_LEN] = {{0}};
-static RmgrDescData CustomRmgrDesc[RM_N_CUSTOM_IDS] = {{0}};
+static char CustomNumericNames[RM_N_CUSTOM_IDS][CUSTOM_NUMERIC_NAME_LEN] = {0};
+static RmgrDescData CustomRmgrDesc[RM_N_CUSTOM_IDS] = {0};
 static bool CustomRmgrDescInitialized = false;
 
 /*
index bf099aab2787463caa46653a544bb90ac95a3124..c17c728ebb4f13caea4713713c3986fa7aff60f4 100644 (file)
@@ -2279,15 +2279,10 @@ evalStandardFunc(CState *st,
 {
    /* evaluate all function arguments */
    int         nargs = 0;
+   PgBenchValue vargs[MAX_FARGS] = {0};
    PgBenchExprLink *l = args;
    bool        has_null = false;
 
-   /*
-    * This value is double braced to workaround GCC bug 53119, which seems to
-    * exist at least on gcc (Debian 4.7.2-5) 4.7.2, 32-bit.
-    */
-   PgBenchValue vargs[MAX_FARGS] = {{0}};
-
    for (nargs = 0; nargs < MAX_FARGS && l != NULL; nargs++, l = l->next)
    {
        if (!evaluateExpr(st, l->expr, &vargs[nargs]))
index 6d9c1dfddbc671b438209af317377d39955f9b64..b935baf9ad4bb754f714132a8f79a8bae9089bba 100644 (file)
@@ -265,7 +265,7 @@ BlockRefTableSetLimitBlock(BlockRefTable *brtab,
                           BlockNumber limit_block)
 {
    BlockRefTableEntry *brtentry;
-   BlockRefTableKey key = {{0}};   /* make sure any padding is zero */
+   BlockRefTableKey key = {0}; /* make sure any padding is zero */
    bool        found;
 
    memcpy(&key.rlocator, rlocator, sizeof(RelFileLocator));
@@ -300,7 +300,7 @@ BlockRefTableMarkBlockModified(BlockRefTable *brtab,
                               BlockNumber blknum)
 {
    BlockRefTableEntry *brtentry;
-   BlockRefTableKey key = {{0}};   /* make sure any padding is zero */
+   BlockRefTableKey key = {0}; /* make sure any padding is zero */
    bool        found;
 #ifndef FRONTEND
    MemoryContext oldcontext = MemoryContextSwitchTo(brtab->mcxt);
@@ -340,7 +340,7 @@ BlockRefTableEntry *
 BlockRefTableGetEntry(BlockRefTable *brtab, const RelFileLocator *rlocator,
                      ForkNumber forknum, BlockNumber *limit_block)
 {
-   BlockRefTableKey key = {{0}};   /* make sure any padding is zero */
+   BlockRefTableKey key = {0}; /* make sure any padding is zero */
    BlockRefTableEntry *entry;
 
    Assert(limit_block != NULL);
@@ -521,7 +521,7 @@ WriteBlockRefTable(BlockRefTable *brtab,
        for (i = 0; i < brtab->hash->members; ++i)
        {
            BlockRefTableSerializedEntry *sentry = &sdata[i];
-           BlockRefTableKey key = {{0}};   /* make sure any padding is zero */
+           BlockRefTableKey key = {0}; /* make sure any padding is zero */
            unsigned    j;
 
            /* Write the serialized entry itself. */
@@ -616,7 +616,7 @@ BlockRefTableReaderNextRelation(BlockRefTableReader *reader,
                                BlockNumber *limit_block)
 {
    BlockRefTableSerializedEntry sentry;
-   BlockRefTableSerializedEntry zentry = {{0}};
+   BlockRefTableSerializedEntry zentry = {0};
 
    /*
     * Sanity check: caller must read all blocks from all chunks before moving
@@ -1291,7 +1291,7 @@ BlockRefTableWrite(BlockRefTableBuffer *buffer, void *data, int length)
 static void
 BlockRefTableFileTerminate(BlockRefTableBuffer *buffer)
 {
-   BlockRefTableSerializedEntry zentry = {{0}};
+   BlockRefTableSerializedEntry zentry = {0};
    pg_crc32c   crc;
 
    /* Write a sentinel indicating that there are no more entries. */
index 0e3cfede9357bdfae77a0e4ae4e1baafbd3154e5..eaa2e76f43f5ca8a20966e845e4c74daed25284a 100644 (file)
@@ -687,7 +687,7 @@ pg_pwritev_with_retry(int fd, const struct iovec *iov, int iovcnt, off_t offset)
 ssize_t
 pg_pwrite_zeros(int fd, size_t size, off_t offset)
 {
-   static const PGIOAlignedBlock zbuffer = {{0}};  /* worth BLCKSZ */
+   static const PGIOAlignedBlock zbuffer = {0};    /* worth BLCKSZ */
    void       *zerobuf_addr = unconstify(PGIOAlignedBlock *, &zbuffer)->data;
    struct iovec iov[PG_IOV_MAX];
    size_t      remaining_size = size;
index 3612819ae43aa86102dad930dc2a68e3cb016503..9e0e8a9f2bece9f26aa2421cd2b2ed04b976ff64 100644 (file)
@@ -1232,7 +1232,7 @@ register_socket(CURL *curl, curl_socket_t socket, int what, void *ctx,
 #endif
 #ifdef HAVE_SYS_EVENT_H
    struct async_ctx *actx = ctx;
-   struct kevent ev[2] = {{0}};
+   struct kevent ev[2] = {0};
    struct kevent ev_out[2];
    struct timespec timeout = {0};
    int         nev = 0;