Thread: Warning in geqo_main.c from clang 13
Hi, Clang 13 on my machine and peripatus (but not Apple clang 13 on eg sifika, I'm still confused about Apple's versioning but I think that's really llvm 12-based) warns: geqo_main.c:86:8: warning: variable 'edge_failures' set but not used [-Wunused-but-set-variable] int edge_failures = 0; Here's one way to silence it.
Attachment
Thomas Munro <thomas.munro@gmail.com> writes: > Clang 13 on my machine and peripatus (but not Apple clang 13 on eg > sifika, I'm still confused about Apple's versioning but I think that's > really llvm 12-based) warns: > geqo_main.c:86:8: warning: variable 'edge_failures' set but not used > [-Wunused-but-set-variable] > int edge_failures = 0; Yeah, I noticed that a week or two ago, but didn't see a simple fix. > Here's one way to silence it. I'm kind of inclined to just drop the edge_failures recording/logging altogether, rather than make that rats-nest of #ifdefs even worse. It's not like anyone has cared about that number in the last decade or two. regards, tom lane
I wrote: > Thomas Munro <thomas.munro@gmail.com> writes: >> Clang 13 on my machine and peripatus (but not Apple clang 13 on eg >> sifika, I'm still confused about Apple's versioning but I think that's >> really llvm 12-based) warns: >> geqo_main.c:86:8: warning: variable 'edge_failures' set but not used >> [-Wunused-but-set-variable] >> Here's one way to silence it. > I'm kind of inclined to just drop the edge_failures recording/logging > altogether, rather than make that rats-nest of #ifdefs even worse. > It's not like anyone has cared about that number in the last decade > or two. We're starting to see more buildfarm animals producing this warning, so I took another look, and thought of a slightly less invasive way to silence it. I confirmed this works with clang 13.0.0 on Fedora 35. regards, tom lane diff --git a/src/backend/optimizer/geqo/geqo_main.c b/src/backend/optimizer/geqo/geqo_main.c index 333a26a695..68ed74325c 100644 --- a/src/backend/optimizer/geqo/geqo_main.c +++ b/src/backend/optimizer/geqo/geqo_main.c @@ -227,12 +227,17 @@ geqo(PlannerInfo *root, int number_of_rels, List *initial_rels) } -#if defined(ERX) && defined(GEQO_DEBUG) +#if defined(ERX) +#if defined(GEQO_DEBUG) if (edge_failures != 0) elog(LOG, "[GEQO] failures: %d, average: %d", edge_failures, (int) number_generations / edge_failures); else elog(LOG, "[GEQO] no edge failures detected"); +#else + /* suppress variable-set-but-not-used warnings from some compilers */ + (void) edge_failures; +#endif #endif #if defined(CX) && defined(GEQO_DEBUG)
On Sun, Jan 23, 2022 at 11:34 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > We're starting to see more buildfarm animals producing this warning, > so I took another look, and thought of a slightly less invasive way to > silence it. I confirmed this works with clang 13.0.0 on Fedora 35. LGTM. Tested on bleeding edge clang 14.
Thomas Munro <thomas.munro@gmail.com> writes: > On Sun, Jan 23, 2022 at 11:34 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: >> We're starting to see more buildfarm animals producing this warning, >> so I took another look, and thought of a slightly less invasive way to >> silence it. I confirmed this works with clang 13.0.0 on Fedora 35. > LGTM. Tested on bleeding edge clang 14. Pushed, thanks. regards, tom lane