@@ -3261,11 +3261,9 @@ BackwardPass::ProcessBlock(BasicBlock * block)
3261
3261
// block, which we can keep from being cleaned up, and which will always be handled
3262
3262
// before the loop is looked at (in this phase), since it is placed after the loop.
3263
3263
AssertOrFailFast (maskingBlock->upwardExposedUses );
3264
- AssertOrFailFast (maskingBlock->byteCodeUpwardExposedUsed );
3265
3264
AssertOrFailFast (maskingBlock->upwardExposedFields );
3266
3265
BVSparse<JitArenaAllocator> *symsToMask = JitAnew (alloc, BVSparse<JitArenaAllocator>, alloc);
3267
3266
symsToMask->Or (maskingBlock->upwardExposedUses );
3268
- symsToMask->Or (maskingBlock->byteCodeUpwardExposedUsed );
3269
3267
symsToMask->Or (maskingBlock->upwardExposedFields );
3270
3268
symsToMask->And (syms);
3271
3269
// If nothing is exposed, we have nothing to mask, and nothing to do here.
@@ -3568,7 +3566,9 @@ BackwardPass::ProcessBlock(BasicBlock * block)
3568
3566
if (this ->tag == Js::DeadStorePhase
3569
3567
// We don't need the masking blocks in asmjs/wasm mode
3570
3568
&& !block->GetFirstInstr ()->m_func ->GetJITFunctionBody ()->IsAsmJsMode ()
3571
- && !block->GetFirstInstr ()->m_func ->GetJITFunctionBody ()->IsWasmFunction ())
3569
+ && !block->GetFirstInstr ()->m_func ->GetJITFunctionBody ()->IsWasmFunction ()
3570
+ && !block->isDead
3571
+ && !block->isDeleted )
3572
3572
{
3573
3573
FOREACH_PREDECESSOR_BLOCK (blockPred, block)
3574
3574
{
@@ -3580,7 +3580,7 @@ BackwardPass::ProcessBlock(BasicBlock * block)
3580
3580
// Note that we're doing this backwards - looking from the target into the loop. We
3581
3581
// do this because this way because we're going backwards over the blocks anyway; a
3582
3582
// block inserted after the branch may be impossible to correctly handle.
3583
- if (blockPred->loop != nullptr )
3583
+ if (!blockPred-> isDead && !blockPred-> isDeleted && blockPred->loop != nullptr )
3584
3584
{
3585
3585
Loop* targetLoop = block->loop ;
3586
3586
Loop* startingLoop = blockPred->loop ;
0 commit comments