https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109071

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2023-03-09

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Yep, so we produce

<bb 2> [local count: 1073741824]:
if (index_3(D) > 3)
  goto <bb 4>; [33.00%]
else
  goto <bb 3>; [67.00%]

<bb 4> [local count: 354334800]:
warn ();
*ptr_5(D) = 0;
_17 = MEM <struct nums> [(int *)sg_2(D)].vals[index_3(D)];
warn ();

<bb 5> [local count: 1073741824]:
# _18 = PHI <_14(3), _17(4)>
*ptr_5(D) = _18;
return;

(and BB 3 with a BB4 duplicate w/o warn () calls).  If warn () were
noreturn this wouldn't happen.

And yes, we do have (plenty?) duplicates.

Reply via email to