On Thu, Feb 6, 2020 at 6:03 AM Pádraig Brady <p...@draigbrady.com> wrote: > On 06/02/2020 00:27, Jim Meyering wrote: > > Building latest latest coreutils using latest-from-git gcc10 evokes > > this false positive: > > > > lib/careadlinkat.c: In function 'careadlinkat': > > cc1: error: function may return address of local variable > > [-Werror=return-local-addr] > > lib/careadlinkat.c:73:8: note: declared here > > 73 | char stack_buf[1024]; > > > > I'm guessing improved flow analysis will eventually suppress this. I > > hesitate to turn off the useful and normally-high-S/N > > -Wreturn-local-addr globally. Maybe just disable it in that one file, > > temporarily? > > The logic of the function looks fine. > Would an `assure (buf != stack_buf)` before the `return buf` > indicate that constraint to gcc with minimal runtime overhead?
I would have preferred that, but it has no effect. I then tried to suppress that warning in the affected file by adding these lines: /* Without this pragma, gcc 10.0.1 20200205 reports that the "function may return address of local variable". */ # pragma GCC diagnostic ignored "-Wreturn-local-addr" But, surprisingly, that didn't help, either. Also tried Kaz Kylheku's return-early suggestion, to no avail. Hence, my last resort suggestion: disable that warning option for all gnulib compiles. Note that simply omitting the -W... option was insufficient (probably pulled in by some high-level one), so I resorted to adding -Wno-return-local-addr:
gcc10-FP-vs-careadlinkat.diff
Description: Binary data