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: pgsql-hackers@lists.postgresql.org
Date: 2025-04-16T22:18:23Z
Lists: pgsql-hackers
> On 17 Apr 2025, at 00:12, Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Daniel Gustafsson <daniel@yesql.se> writes: >>> On 16 Apr 2025, at 23:42, Tom Lane <tgl@sss.pgh.pa.us> wrote: >>> I'm not sure >>> how other than giving up on stack allocation of JsonLexContexts, >>> though, especially if we consider the jsonapi API frozen. But seeing >>> that there are only three such call sites and none of them seem in the >>> least performance-critical, maybe we should just do that? > >> I can't see any other option really, and there is no performance angle really >> so that should be safe. Since I committed at least one of these, let me know >> if you want me to tackle it. > > The only alternative I can see that might stop the warning is if we > can find a way to make it clearer to the optimizer that the FREE() > isn't reached. But I'm not sure about a trustworthy way to make that > happen. Maybe it'd work to change the signature of freeJsonLexContext > (or perhaps better, add a separate entry point) so that the caller is > passing a bool constant that controls whether to free the struct. > We could have an Assert that compares that to the state of the > JSONLEX_FREE_STRUCT flag to catch mistakes. This seems kind of messy > though. Yeah, that seems messy enough that someone down the line will go "why on earth" and we'll have to revisit this discussion. It can probably be made to work but I doubt it will be worth it compared to allocating on the heap. -- Daniel Gustafsson
Commits
-
Allocate JsonLexContexts on the heap to avoid warnings
- 994a100b37ad 18.0 landed