diff --git a/src/shader_recompiler/frontend/ir/basic_block.h b/src/shader_recompiler/frontend/ir/basic_block.h
index ab7ddb3d5..0b0c97af6 100644
--- a/src/shader_recompiler/frontend/ir/basic_block.h
+++ b/src/shader_recompiler/frontend/ir/basic_block.h
@@ -107,6 +107,13 @@ public:
         return ssa_reg_values[RegIndex(reg)];
     }
 
+    void SsaSeal() noexcept {
+        is_ssa_sealed = true;
+    }
+    [[nodiscard]] bool IsSsaSealed() const noexcept {
+        return is_ssa_sealed;
+    }
+
     [[nodiscard]] bool empty() const {
         return instructions.empty();
     }
@@ -190,6 +197,8 @@ private:
 
     /// Intrusively store the value of a register in the block.
     std::array<Value, NUM_REGS> ssa_reg_values;
+    /// Intrusively store if the block is sealed in the SSA pass.
+    bool is_ssa_sealed{false};
 
     /// Intrusively stored host definition of this block.
     u32 definition{};
diff --git a/src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp b/src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp
index fe86a164b..3bab742e7 100644
--- a/src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp
+++ b/src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp
@@ -195,7 +195,7 @@ public:
             case Status::Start: {
                 if (const IR::Value& def = current_def.Def(block, variable); !def.IsEmpty()) {
                     stack.back().result = def;
-                } else if (!sealed_blocks.contains(block)) {
+                } else if (!block->IsSsaSealed()) {
                     // Incomplete CFG
                     IR::Inst* phi{&*block->PrependNewInst(block->begin(), IR::Opcode::Phi)};
                     phi->SetFlags(IR::TypeOf(UndefOpcode(variable)));
@@ -251,7 +251,7 @@ public:
                 std::visit([&](auto& variable) { AddPhiOperands(variable, *phi, block); }, variant);
             }
         }
-        sealed_blocks.insert(block);
+        block->SsaSeal();
     }
 
 private:
@@ -297,7 +297,6 @@ private:
         return same;
     }
 
-    boost::container::flat_set<IR::Block*> sealed_blocks;
     boost::container::flat_map<IR::Block*, boost::container::flat_map<Variant, IR::Inst*>>
         incomplete_phis;
     DefTable current_def;