JIT: Set bbFalseTarget upon BBJ_COND initialization/modification#96265
JIT: Set bbFalseTarget upon BBJ_COND initialization/modification#96265amanasifkhalid merged 8 commits intodotnet:mainfrom
bbFalseTarget upon BBJ_COND initialization/modification#96265Conversation
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsPart of #93020. Previously,
|
|
cc @dotnet/jit-contrib. No asmdiffs, and small TP diffs. SPMI failures are due to timeouts on win-x86. I noticed that we only use |
| // TODO-NoFallThrough: also set bbFalseTarget | ||
| bbKind = BBJ_COND; | ||
| bbTrueTarget = trueTarget; | ||
| bbFalseTarget = bbNext; |
There was a problem hiding this comment.
Should this function take a falseTarget parameter that is used to set bbFalseTarget? Then, callers would be required to set it. Maybe later on when we remove bbNext as fall through?
There was a problem hiding this comment.
That makes sense to me. I'll open a follow-up PR with that refactor; it might help others avoid hitting asserts around bbFalseTarget by forcing them to set it when initializing bbTrueTarget.
Thank you for the review!
Part of #93020. Previously,
bbFalseTargetwas hard-coded to matchbbNextinBasicBlock::SetNext. We still requirebbFalseTargetto point to the next block forBBJ_CONDblocks, but I've removed the logic for updatingbbFalseTargetfromSetNext, and placed calls toSetFalseTargetwhereverbbFalseTargetneeds to be updated because theBBJ_CONDblock has been created or moved relative to its false successor. This helps set us up to start removing logic that enforces the block's false successor is the next block.