https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110540
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2023-07-06 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed. After threadfull2 we have: # VUSE <.MEM_17> _6 = *f.3_5; # VUSE <.MEM_17> _7 = *_6; if (_7 <= 0) goto <bb 3>; [5.50%] else goto <bb 6>; [94.50%] <bb 3> [local count: 55807731]: # .MEM_19 = VDEF <.MEM_17> *_6 = 0; # VUSE <.MEM_19> _10 = *f.3_5; if (_10 != 0B) goto <bb 5>; [0.00%] else goto <bb 4>; [100.00%] But there is nothing which will optimize the load of *f.3_5 to be _6 before vrp2 (which is the next pass). There seems to be some other issues earlier on which gets us to that IR that late but I am not sure how ...