[Bug c++/83990] [7/8 Regression] Spurious "potential null pointer dereference" warning regression from 7.1 onwards
law at redhat dot com
gcc-bugzilla@gcc.gnu.org
Wed Jan 24 21:43:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83990
Jeffrey A. Law <law at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-01-24
CC| |law at redhat dot com
Ever confirmed|0 |1
--- Comment #5 from Jeffrey A. Law <law at redhat dot com> ---
In the reduced testcase we have:
;; basic block 3, loop depth 1, count 10737436510031 (estimated locally),
maybe hot
;; prev block 2, next block 4, flags: (NEW, REACHABLE, VISITED)
;; pred: 2 [always] count:1073741826 (estimated locally)
(FALLTHRU,EXECUTABLE)
;; 5 [always] count:10737436510031 (estimated locally)
(FALLTHRU,DFS_BACK,EXECUTABLE)
# da_6 = PHI <0B(2), _7(5)>
_5 = operator new (8, db_4(D));
MEM[(struct &)_5] ={v} {CLOBBER};
_8 = &MEM[(struct e *)_5].cm;
a::d::e::cq (_5);
_9 = a::d::e::co (_5);
a::d::e::cl::cl (_8, _9, D.3228);
cp_10 = da_6->cm.r;
if (cp_10 != 0B)
goto <bb 4>; [53.47%]
else
goto <bb 5>; [46.53%]
THe warning seems warranted to me. The location as has been pointed out in
other comments is totally bogus.
Similarly for the full testcase:
;; basic block 4, loop depth 1
;; pred: 3
;; 7
# __first$_M_current_2 = PHI <0B(3), _47(7)>
# __cur_38 = PHI <_50(3), __cur_48(7)>
MEM[(struct &)__cur_38] ={v} {CLOBBER};
_41 = &__cur_38->D.22571._M_local_buf;
MEM[(struct &)__cur_38] ={v} {CLOBBER};
MEM[(struct _Alloc_hider *)__cur_38]._M_p = _41;
_42 = MEM[(const struct basic_string *)__first$_M_current_2];
_43 = &MEM[(const struct basic_string
*)__first$_M_current_2].D.22571._M_local_buf;
if (_42 == _43)
goto <bb 5>; [30.00%]
else
goto <bb 6>; [70.00%]
;; succ: 5
;; 6
More information about the Gcc-bugs
mailing list