> On 17 Apr 2025, at 01:28, Tom Lane <t...@sss.pgh.pa.us> wrote:
> 
> Jacob Champion <jacob.champ...@enterprisedb.com> writes:
>> On Wed, Apr 16, 2025 at 4:04 PM Tom Lane <t...@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

Attachment: 0001-Allocate-JsonLexContexts-on-the-heap-to-avoid-warnin.patch
Description: Binary data

Reply via email to