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");
 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;
 
        {
            RelOptInfo *outerrel = fpinfo->outerrel;
            PgFdwRelationInfo *ofpinfo;
-           AggClauseCosts aggcosts;
+           AggClauseCosts aggcosts = {0};
            double      input_rows;
            int         numGroupCols;
            double      numGroups = 1;
            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);
 
    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;
    }
 
 
 
 #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
 {
 
 
 #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;
 
 /*
 
 {
    /* 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]))
 
                           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));
                               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);
 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);
        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. */
                                BlockNumber *limit_block)
 {
    BlockRefTableSerializedEntry sentry;
-   BlockRefTableSerializedEntry zentry = {{0}};
+   BlockRefTableSerializedEntry zentry = {0};
 
    /*
     * Sanity check: caller must read all blocks from all chunks before moving
 static void
 BlockRefTableFileTerminate(BlockRefTableBuffer *buffer)
 {
-   BlockRefTableSerializedEntry zentry = {{0}};
+   BlockRefTableSerializedEntry zentry = {0};
    pg_crc32c   crc;
 
    /* Write a sentinel indicating that there are no more entries. */
 
 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;
 
 #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;