https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100086
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2021-04-14 URL| |https://bugzilla.redhat.com | |/show_bug.cgi?id=1948775 Blocks| |95507 Known to fail| |11.0 Keywords| |diagnostic Status|UNCONFIRMED |NEW Summary|spurious -Wnonnull with |[11 Regression] spurious |__builtin_expect |-Wnonnull with | |__builtin_expect Ever confirmed|0 |1 --- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> --- According to my bisection the warning first appeared in GCC 11, with g:fcae5121154d1c3382b056bcc2c563cedac28e74. Before then the post_ipa_warn dump looked like so: ;; Function TestBody (_Z8TestBodyv, funcdef_no=8, decl_uid=2406, cgraph_uid=9, symbol_order=8) TestBody () { struct RefPtr emptyTake; struct string D.2453; struct AssertHelper D.2481; bool _1; char * _2; char * _14; bool _15; char * _16; bool _17; long int _18; long int _19; long int _20; long int _21; char * _22; bool _23; long int _24; long int _25; <bb 2> [local count: 1073741824]: emptyTake = take (); [return slot optimization] _14 = emptyTake.p; _15 = _14 != 0B; _1 = _14 == 0B; if (_1 != 0) goto <bb 9>; [79.76%] else goto <bb 3>; [20.24%] <bb 3> [local count: 217325344]: D.2453 = GetMessage (); <bb 4> [local count: 217325344]: _2 = D.2453.p; AssertHelper::AssertHelper (&D.2481, _2); <bb 5> [local count: 217325344]: AssertHelper::operator= (&D.2481, 1); <bb 6> [local count: 217325344]: D.2481 ={v} {CLOBBER}; _16 = emptyTake.p; _17 = _16 != 0B; _18 = (long int) _17; _19 = _18; if (_19 != 0) goto <bb 7>; [90.00%] else goto <bb 8>; [10.00%] <bb 7> [local count: 195592809]: __builtin_puts (_16); <bb 8> [local count: 217325344]: emptyTake ={v} {CLOBBER}; emptyTake ={v} {CLOBBER}; goto <bb 12>; [100.00%] <bb 9> [local count: 856416481]: _20 = (long int) _15; _21 = _20; if (_21 != 0) goto <bb 10>; [90.00%] else goto <bb 11>; [10.00%] <bb 10> [local count: 770774832]: __builtin_puts (_14); <bb 11> [local count: 856416481]: emptyTake ={v} {CLOBBER}; emptyTake ={v} {CLOBBER}; <bb 12> [local count: 1073741824]: return; <bb 13> [count: 0]: <L8>: D.2481 ={v} {CLOBBER}; _22 = emptyTake.p; _23 = _22 != 0B; _24 = (long int) _23; _25 = _24; if (_25 != 0) goto <bb 14>; [0.00%] else goto <bb 15>; [0.00%] <bb 14> [count: 0]: __builtin_puts (_22); <bb 15> [count: 0]: emptyTake ={v} {CLOBBER}; resx 2 } Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95507 [Bug 95507] [meta-bug] bogus/missing -Wnonnull