Uh oh!
There was an error while loading. Please reload this page.
JIT: Update terminology in loop cloning, and simplify a bit - #95648
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`.
ghost
commented
Dec 5, 2023
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.
|
| // 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.
jakobbotsch
commented
Dec 6, 2023
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. |
| @@ -2044,112 +2032,93 @@ void Compiler::optCloneLoop(FlowGraphNaturalLoop* loop, LoopCloneContext* contex | |||
| BasicBlock* h = preheader; | |||
BruceForstall
commented
Dec 7, 2023
This is going to conflict with #95139. Can you wait for that one? |
jakobbotsch
commented
Dec 7, 2023
Sure, looks like it was just merged. |
jakobbotsch
commented
Dec 7, 2023
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.