On Thu, May 20, 2021 at 7:00 AM Jeff Law via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > > On 5/19/2021 3:01 PM, Martin Sebor via Gcc-patches wrote: > > The front end -Wnonnull handler has code to suppress warning for > > lambdas with null this pointers but the middle end handler has > > no corresponding logic. This leads to spurious -Wnonnull in > > lambda calls that aren't inlined. That might happen at low > > optimization levels such as -O1 or -Og and with sanitization. > > > > The attached patch enhances the middle end -Wnonnull to deal > > with this case and avoid the false positives. > > > > Tested on x86_64-linux. > > > > Martin > > > > gcc-100684.diff > > > > PR middle-end/100684 - spurious -Wnonnull with -O1 on a C++ lambda > > > > gcc/ChangeLog: > > > > PR middle-end/100684 > > * tree-ssa-ccp.c (pass_post_ipa_warn::execute): > > > > gcc/testsuite/ChangeLog: > > > > PR middle-end/100684 > > * g++.dg/warn/Wnonnull13.C: New test. > > * g++.dg/warn/Wnonnull14.C: New test. > > * g++.dg/warn/Wnonnull15.C: New test. > > OK with a ChangeLog entry for the tree-ssa-ccp change.
Note it won't work with LTO because when the lambda type was introduced it was added to the hashing code but the streaming only streams the sub-state DECL_IS_OPERATOR_NEW_P rather than the full FUNCTION_DECL_DECL_TYPE ... Martin - was this intended? Can you fix it up please? (g:cb50701ec2c7) Thanks, Richard. > > Jeff