From 0e85abd658738db9ea183c133c89c3c94ee37dae Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Wed, 21 Mar 2012 23:30:14 +0200 Subject: [PATCH] Clean up compiler warnings from unused variables with asserts disabled For those variables only used when asserts are enabled, use a new macro PG_USED_FOR_ASSERTS_ONLY, which expands to __attribute__((unused)) when asserts are not enabled. --- src/backend/access/hash/hashovfl.c | 2 +- src/backend/executor/execCurrent.c | 2 +- src/backend/executor/nodeMaterial.c | 2 +- src/backend/executor/nodeSetOp.c | 2 +- src/backend/executor/nodeWorktablescan.c | 4 +--- src/backend/libpq/be-fsstubs.c | 2 +- src/backend/libpq/pqcomm.c | 2 +- src/backend/optimizer/path/costsize.c | 2 +- src/backend/parser/analyze.c | 2 +- src/backend/storage/file/fd.c | 2 +- src/backend/storage/lmgr/predicate.c | 6 +++--- src/backend/storage/lmgr/proc.c | 2 +- src/backend/utils/adt/selfuncs.c | 4 ++-- src/bin/psql/psqlscan.l | 2 +- src/include/c.h | 12 ++++++++++++ 15 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/backend/access/hash/hashovfl.c b/src/backend/access/hash/hashovfl.c index 130c29616c..96dabdb48a 100644 --- a/src/backend/access/hash/hashovfl.c +++ b/src/backend/access/hash/hashovfl.c @@ -391,7 +391,7 @@ _hash_freeovflpage(Relation rel, Buffer ovflbuf, uint32 ovflbitno; int32 bitmappage, bitmapbit; - Bucket bucket; + Bucket bucket PG_USED_FOR_ASSERTS_ONLY; /* Get information from the doomed page */ _hash_checkpage(rel, ovflbuf, LH_OVERFLOW_PAGE); diff --git a/src/backend/executor/execCurrent.c b/src/backend/executor/execCurrent.c index b07161fba4..03790bbe06 100644 --- a/src/backend/executor/execCurrent.c +++ b/src/backend/executor/execCurrent.c @@ -151,7 +151,7 @@ execCurrentOf(CurrentOfExpr *cexpr, { ScanState *scanstate; bool lisnull; - Oid tuple_tableoid; + Oid tuple_tableoid PG_USED_FOR_ASSERTS_ONLY; ItemPointer tuple_tid; /* diff --git a/src/backend/executor/nodeMaterial.c b/src/backend/executor/nodeMaterial.c index b320b545aa..06137c6ba8 100644 --- a/src/backend/executor/nodeMaterial.c +++ b/src/backend/executor/nodeMaterial.c @@ -66,7 +66,7 @@ ExecMaterial(MaterialState *node) * Allocate a second read pointer to serve as the mark. We know it * must have index 1, so needn't store that. */ - int ptrno; + int ptrno PG_USED_FOR_ASSERTS_ONLY; ptrno = tuplestore_alloc_read_pointer(tuplestorestate, node->eflags); diff --git a/src/backend/executor/nodeSetOp.c b/src/backend/executor/nodeSetOp.c index 7fa5730b10..85590445cc 100644 --- a/src/backend/executor/nodeSetOp.c +++ b/src/backend/executor/nodeSetOp.c @@ -344,7 +344,7 @@ setop_fill_hash_table(SetOpState *setopstate) SetOp *node = (SetOp *) setopstate->ps.plan; PlanState *outerPlan; int firstFlag; - bool in_first_rel; + bool in_first_rel PG_USED_FOR_ASSERTS_ONLY; /* * get state info from node diff --git a/src/backend/executor/nodeWorktablescan.c b/src/backend/executor/nodeWorktablescan.c index e2f3dd4d2e..9ada6809f9 100644 --- a/src/backend/executor/nodeWorktablescan.c +++ b/src/backend/executor/nodeWorktablescan.c @@ -30,7 +30,6 @@ static TupleTableSlot * WorkTableScanNext(WorkTableScanState *node) { TupleTableSlot *slot; - EState *estate; Tuplestorestate *tuplestorestate; /* @@ -48,8 +47,7 @@ WorkTableScanNext(WorkTableScanState *node) * worktable. Therefore, we don't need a private read pointer for the * tuplestore, nor do we need to tell tuplestore_gettupleslot to copy. */ - estate = node->ss.ps.state; - Assert(ScanDirectionIsForward(estate->es_direction)); + Assert(ScanDirectionIsForward(node->ss.ps.state->es_direction)); tuplestorestate = node->rustate->working_table; diff --git a/src/backend/libpq/be-fsstubs.c b/src/backend/libpq/be-fsstubs.c index b864c868f2..6f7e474f67 100644 --- a/src/backend/libpq/be-fsstubs.c +++ b/src/backend/libpq/be-fsstubs.c @@ -378,7 +378,7 @@ lo_import_internal(text *filename, Oid lobjOid) { File fd; int nbytes, - tmp; + tmp PG_USED_FOR_ASSERTS_ONLY; char buf[BUFSIZE]; char fnamebuf[MAXPGPATH]; LargeObjectDesc *lobj; diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c index 35812f4491..2082e3d4f6 100644 --- a/src/backend/libpq/pqcomm.c +++ b/src/backend/libpq/pqcomm.c @@ -1373,7 +1373,7 @@ fail: void pq_putmessage_noblock(char msgtype, const char *s, size_t len) { - int res; + int res PG_USED_FOR_ASSERTS_ONLY; int required; /* diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c index 24c853d47e..9cae27b99e 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -3583,7 +3583,7 @@ void set_subquery_size_estimates(PlannerInfo *root, RelOptInfo *rel) { PlannerInfo *subroot = rel->subroot; - RangeTblEntry *rte; + RangeTblEntry *rte PG_USED_FOR_ASSERTS_ONLY; ListCell *lc; /* Should only be applied to base relations that are subqueries */ diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index 3329e9c964..485d686b05 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -1588,7 +1588,7 @@ transformSetOperationTree(ParseState *pstate, SelectStmt *stmt, /* Process leaf SELECT */ Query *selectQuery; char selectName[32]; - RangeTblEntry *rte; + RangeTblEntry *rte PG_USED_FOR_ASSERTS_ONLY; RangeTblRef *rtr; ListCell *tl; diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c index 52d9b6da94..8f442f0a7f 100644 --- a/src/backend/storage/file/fd.c +++ b/src/backend/storage/file/fd.c @@ -685,7 +685,7 @@ LruInsert(File file) /* seek to the right position */ if (vfdP->seekPos != (off_t) 0) { - off_t returnValue; + off_t returnValue PG_USED_FOR_ASSERTS_ONLY; returnValue = lseek(vfdP->fd, vfdP->seekPos, SEEK_SET); Assert(returnValue != (off_t) -1); diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c index 08fb69c32e..1001ed2a17 100644 --- a/src/backend/storage/lmgr/predicate.c +++ b/src/backend/storage/lmgr/predicate.c @@ -2013,7 +2013,7 @@ RestoreScratchTarget(bool lockheld) static void RemoveTargetIfNoLongerUsed(PREDICATELOCKTARGET *target, uint32 targettaghash) { - PREDICATELOCKTARGET *rmtarget; + PREDICATELOCKTARGET *rmtarget PG_USED_FOR_ASSERTS_ONLY; Assert(LWLockHeldByMe(SerializablePredicateLockListLock)); @@ -2074,7 +2074,7 @@ DeleteChildTargetLocks(const PREDICATELOCKTARGETTAG *newtargettag) { uint32 oldtargettaghash; LWLockId partitionLock; - PREDICATELOCK *rmpredlock; + PREDICATELOCK *rmpredlock PG_USED_FOR_ASSERTS_ONLY; oldtargettaghash = PredicateLockTargetTagHashCode(&oldtargettag); partitionLock = PredicateLockHashPartitionLock(oldtargettaghash); @@ -2227,7 +2227,7 @@ DecrementParentLocks(const PREDICATELOCKTARGETTAG *targettag) { uint32 targettaghash; LOCALPREDICATELOCK *parentlock, - *rmlock; + *rmlock PG_USED_FOR_ASSERTS_ONLY; parenttag = nexttag; targettaghash = PredicateLockTargetTagHashCode(&parenttag); diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index 2196f514d8..2926c159bd 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -808,7 +808,7 @@ static void AuxiliaryProcKill(int code, Datum arg) { int proctype = DatumGetInt32(arg); - PGPROC *auxproc; + PGPROC *auxproc PG_USED_FOR_ASSERTS_ONLY; Assert(proctype >= 0 && proctype < NUM_AUXILIARY_PROCS); diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c index 7662b31729..ced40484c4 100644 --- a/src/backend/utils/adt/selfuncs.c +++ b/src/backend/utils/adt/selfuncs.c @@ -3874,7 +3874,7 @@ convert_string_datum(Datum value, Oid typid) { char *xfrmstr; size_t xfrmlen; - size_t xfrmlen2; + size_t xfrmlen2 PG_USED_FOR_ASSERTS_ONLY; /* * Note: originally we guessed at a suitable output buffer size, and @@ -6408,7 +6408,7 @@ btcostestimate(PG_FUNCTION_ARGS) RestrictInfo *rinfo = (RestrictInfo *) lfirst(lcc); Expr *clause; Node *leftop, - *rightop; + *rightop PG_USED_FOR_ASSERTS_ONLY; Oid clause_op; int op_strategy; bool is_null_op = false; diff --git a/src/bin/psql/psqlscan.l b/src/bin/psql/psqlscan.l index a27bcd1ba7..1208c8f475 100644 --- a/src/bin/psql/psqlscan.l +++ b/src/bin/psql/psqlscan.l @@ -1474,7 +1474,7 @@ psql_scan_slash_option(PsqlScanState state, bool semicolon) { PQExpBufferData mybuf; - int lexresult; + int lexresult PG_USED_FOR_ASSERTS_ONLY; char local_quote; /* Must be scanning already */ diff --git a/src/include/c.h b/src/include/c.h index 82acd14a9b..96375ab567 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -710,6 +710,18 @@ typedef NameData *Name; #define STATUS_WAITING (2) +/* + * Append PG_USED_FOR_ASSERTS_ONLY to definitions of variables that are only + * used in assert-enabled builds, to avoid compiler warnings about unused + * variables in assert-disabled builds. + */ +#ifdef USE_ASSERT_CHECKING +#define PG_USED_FOR_ASSERTS_ONLY +#else +#define PG_USED_FOR_ASSERTS_ONLY __attribute__((unused)) +#endif + + /* gettext domain name mangling */ /* -- 2.40.0