Re: jsonapi: scary new warnings with LTO enabled
Daniel Gustafsson <daniel@yesql.se>
From: Daniel Gustafsson <daniel@yesql.se>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Jacob Champion <jacob.champion@enterprisedb.com>,
pgsql-hackers@lists.postgresql.org
Date: 2025-04-17T11:43:18Z
Lists: pgsql-hackers
Attachments
- 0001-Allocate-JsonLexContexts-on-the-heap-to-avoid-warnin.patch (application/octet-stream) patch 0001
> On 17 Apr 2025, at 01:28, Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Jacob Champion <jacob.champion@enterprisedb.com> writes: >> On Wed, Apr 16, 2025 at 4:04 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: >>> Looking through all of the callers of freeJsonLexContext, quite >>> a lot of them use local JsonLexContext structs, and probably some >>> of them are more performance-critical than these. So that raises >>> the question of why are we seeing warnings for only these call >>> sites? > >> Yeah, I had the same question... > > After making another pass through the callers of freeJsonLexContext, > I observe that the warnings appear in callers that use a local > variable *and* contain goto statements. So I'm betting that the > presence of goto's causes the LTO optimizer to pull in its horns > quite a bit and thereby fail to detect the flag correlation. That seems plausible given the selective warnings. >>> Maybe there is a more elegant way to suppress them. > >> Can we brute-force ignore this particular warning site with a #pragma >> (suggested in [1])? > > That's surely not elegant :-(. However, I don't especially want to > rewrite away the goto's in these callers ... Agreed, moving to heap allocated structures for these callsites seem much better. Something like the attached should be enough I think? -- Daniel Gustafsson
Commits
-
Allocate JsonLexContexts on the heap to avoid warnings
- 994a100b37ad 18.0 landed