Sandra Loosemore <[email protected]> writes: > On 10/9/25 15:00, Sam James wrote: >> Sandra Loosemore <[email protected]> writes: >> >>> On 10/8/25 21:15, Sam James wrote: >>>> CCP interacts poorly with -Wmaybe-uninitialized in some cases by assuming >>>> a value >>>> which stops us warning about it (false negatives). Inform users about this >>>> infamous interaction. >>>> gcc/ChangeLog: >>>> PR tree-optimization/18501 >>>> * doc/invoke.texi (-Wmaybe-uninitialized): Mention interaction >>>> with >>>> CCP. >>>> --- >>>> That works for me. I've checked this in. >>>> gcc/doc/invoke.texi | 5 ++++- >>>> 1 file changed, 4 insertions(+), 1 deletion(-) >>>> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi >>>> index f93fe43733dc..8802d416b30c 100644 >>>> --- a/gcc/doc/invoke.texi >>>> +++ b/gcc/doc/invoke.texi >>>> @@ -8375,7 +8375,10 @@ known to read the object.) Annotating the function >>>> with attribute >>>> the object and avoids the warning (@pxref{Common Function Attributes}). >>>> These warnings are only possible in optimizing compilation, >>>> because otherwise >>>> -GCC does not keep track of the state of variables. >>>> +GCC does not keep track of the state of variables. On the other hand, >>>> +@option{-Wmaybe-uninitialized} is known not to warn in many situations >>>> +(false negatives) due to optimizations taking advantage of undefinedness >>>> +of uninitialized uses like constant propagation. >>>> These warnings are made optional because GCC may not be able to >>>> determine when >>>> the code is correct in spite of appearing to have an error. Here is one >>> >>> I'm sorry, I can't parse this one. Do you maybe mean "optimizations >>> like constant propagation" instead of "uninitialized uses like >>> constant propagation"? >> Read it as: "optimizations like constant propagation taking >> advantage of >> uninitialized uses [of variables]". I'll change it to that if you're >> fine with that phrasing? > > Well, I'm confused. If we're not going to tell users what > optimizations to disable or what other options to use to get the best > results, what's the purpose of the added text? I guess I know more > about typical compiler optimization strategies and GCC's in particular > than most users and since I don't see an immediate connection between > the warning and constant propagation, I suspect this would be even > more meaningless to average users. We might as well just tell them > that some optimizations interfere with -Wmaybe-uninitialized, and > leave it at that.
I guess it's a hint for advanced users that they can disable CCP, while adhering to Richard's request to not encourage it. But if you don't think it's adding anything, I can certainly understand that too. I think if we're going to say "some optimisations", we may as well name some known problematic ones to help people workaround issues. richi doesn't want us to name a flag because it's too tempting for people to slap it in their build flags then. What's a good compromise? (I know this is kind of bikesheddy but I hope to apply some of this to other cases too where appropriate.) > > -Sandra sam
