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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2024-12-17
     Ever confirmed|0                           |1

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #2)
> It is more closely related to PR 117665


yes it is.

Before EVRP:
;;   basic block 3, loop depth 0
;;    pred:       2
  _15 = MEM[(struct b *)this_6(D)]._vptr.b;
  _16 = *_15;
  _17 = b::c (_1);
;;    succ:       4
;;                5

Afterwards:
;;   basic block 3, loop depth 0
;;    pred:       2
  _15 = MEM[(struct b *)this_6(D)]._vptr.b;
  _16 = *_15;
;;    succ:       4
;;                5

VRP should have cleaned up the abormal edge here.

Folding statement: _17 = b::c (_1);
Queued stmt for removal.  Folds to: 0
Folding statement: _setjmp ();
Not folded
Folding statement: .ABNORMAL_DISPATCHER (0);
Not folded
Folding statement: return;
Not folded
Removing dead stmt:_17 = b::c (_1);
Removing dead stmt:_1 = &this_6(D)->D.2889;

Let me look into this.

Reply via email to