https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108374
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |diagnostic Status|UNCONFIRMED |NEW Priority|P3 |P2 Target Milestone|--- |12.3 Last reconfirmed| |2023-01-12 Ever confirmed|0 |1 Version|unknown |12.2.0 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- We now say cc1plus: note: destination object is likely at address zero <bb 2> [local count: 1073741824]: _9 = MEM[(const struct __shared_ptr &)pointer_2(D)]._M_ptr; _10 = MEM[(const struct __shared_count &)pointer_2(D) + 8]._M_pi; if (_10 != 0B) goto <bb 4>; [53.47%] else goto <bb 3>; [46.53%] <bb 3> [local count: 499612072]: __atomic_load_8 (16B, 5); [tail call] D.37576 ={v} {CLOBBER}; D.37576 ={v} {CLOBBER(eol)}; goto <bb 19>; [100.00%] (leads straight to return) so we have __shared_count of pointer _M_pi == 0 here, whatever that means and not sure why we atomically load here. Confirmed.