[turboshaft] fix single-block loop bug

Bug: v8:12783
Change-Id: Ia4aaf245428dd63be09a33bfb684f0573f6b9296
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3913084
Reviewed-by: Manos Koukoutos <manoskouk@chromium.org>
Auto-Submit: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#83420}
This commit is contained in:
Tobias Tebbi 2022-09-22 13:17:37 +02:00 committed by V8 LUCI CQ
parent f21ae18515
commit d792c27353

View File

@ -290,12 +290,13 @@ struct OptimizationPhase<Analyzer, Assembler>::Impl {
V8_INLINE OpIndex ReduceGoto(const GotoOp& op) {
Block* destination = MapToNewGraph(op.destination->index());
assembler.current_block()->SetOrigin(current_input_block);
assembler.Goto(destination);
if (destination->IsBound()) {
DCHECK(destination->IsLoop());
FixLoopPhis(destination);
}
assembler.current_block()->SetOrigin(current_input_block);
return assembler.Goto(destination);
return OpIndex::Invalid();
}
V8_INLINE OpIndex ReduceBranch(const BranchOp& op) {
Block* if_true = MapToNewGraph(op.if_true->index());