https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117892
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I actually think this might be a DSE issue. Deleted dead store: # .MEM_5 = VDEF <.MEM_3(D)> # USE = nonlocal # CLB = { D.2867 } _Z1bPiD.2862 (&fD.2867); And that creates an empty basic block with no successors: ;; basic block 3, loop depth 0, maybe hot ;; prev block 2, next block 4, flags: (NEW, VISITED) ;; pred: 2 (TRUE_VALUE,EXECUTABLE) ;; succ: That started in GCC 12.