JIT: Update terminology in loop cloning, and simplify a bit#95648
JIT: Update terminology in loop cloning, and simplify a bit#95648jakobbotsch merged 6 commits intodotnet:mainfrom
Conversation
Update some terminology in loop cloning; rewrite docs to be less "lexical" oriented; move responsibility of maintenance of old preheader -> first cond link out of `CondToStmtInBlock`.
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsUpdate some terminology in loop cloning; rewrite docs to be less "lexical" oriented; move maintenance of old preheader -> first cond link out of No diffs expected.
|
src/coreclr/jit/loopcloning.cpp
Outdated
| // Make 'h' fall through to 'h2' (if it didn't already). | ||
| // Don't add the h->h2 edge because we're going to insert the cloning conditions between 'h' and 'h2', and | ||
| // optInsertLoopChoiceConditions() will add the edge. | ||
| h->SetJumpDest(h2); | ||
| assert(h->JumpsToNext()); | ||
| h->bbFlags |= BBF_NONE_QUIRK; |
There was a problem hiding this comment.
I thought this part was a bit odd -- we make h (now preheader) jump to h2 (now fastPreheader), then insert conditions between preheader and fastPreheader and make preheader jump to the first condition instead (which is done inside CondToStmtInBlock). It seemed like CondToStmtInBlock shouldn't be responsible for updating this link, so I've updated it so that we just leave preheader alone until the end of this function and then directly set it to jump to the first choice condition.
|
cc @dotnet/jit-contrib PTAL @BruceForstall x64 superpmi-replay failure is the timeout we see once in a while. x86 failure is presumably the one fixed by #95671. |
src/coreclr/jit/loopcloning.cpp
Outdated
| @@ -2044,112 +2032,93 @@ void Compiler::optCloneLoop(FlowGraphNaturalLoop* loop, LoopCloneContext* contex | |||
| BasicBlock* h = preheader; | |||
|
This is going to conflict with #95139. Can you wait for that one? |
Sure, looks like it was just merged. |
|
Closing and reopening to pick up #95718 |
Update some terminology in loop cloning; rewrite docs to be less "lexical" oriented; move maintenance of old preheader -> first cond link out of
CondToStmtInBlock.No diffs expected.