Thread: Warning in geqo_main.c from clang 13

Warning in geqo_main.c from clang 13

From
Thomas Munro
Date:
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

Re: Warning in geqo_main.c from clang 13

From
Tom Lane
Date:
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



Re: Warning in geqo_main.c from clang 13

From
Tom Lane
Date:
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)

Re: Warning in geqo_main.c from clang 13

From
Thomas Munro
Date:
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.



Re: Warning in geqo_main.c from clang 13

From
Tom Lane
Date:
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