https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111860
Tamar Christina <tnfchris at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2023-10-18 Ever confirmed|0 |1 --- Comment #5 from Tamar Christina <tnfchris at gcc dot gnu.org> --- Confirmed, looks like the rename failed on one edge, BB 15 has: ;; basic block 15, loop depth 0, count 94607391 (estimated locally, freq 0.8010), maybe hot ;; prev block 10, next block 18, flags: (NEW, VISITED) ;; pred: 7 [11.0% (guessed)] count:94607391 (estimated locally, freq 0.8010) (FALSE_VALUE,EXECUTABLE) # length_13 = PHI <length_17(7)> # .MEM_8 = PHI <.MEM_30(7)> and BB 19 has: ;; basic block 19, loop depth 0, count 105119324 (estimated locally, freq 0.8900), maybe hot ;; prev block 17, next block 8, flags: (NEW, REACHABLE, VISITED) ;; pred: 16 [33.3% (guessed)] count:81467477 (estimated locally, freq 0.6898) (FALSE_VALUE,EXECUTABLE) ;; 15 [25.0% (guessed)] count:23651848 (estimated locally, freq 0.2003) (TRUE_VALUE) # length_47 = PHI <length_21(16), _61(15)> # .MEM_48 = PHI <.MEM_30(16), .MEM_30(15)> It looks like after the loop guard is added after peeling that the use for the edge coming in from BB 15 wasn't updated. Most likely find_guard failed. Working on it. Odd that it only fails on x86 though.