summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp')
-rw-r--r--src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp b/src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp
index 346fcc377..ddd679e39 100644
--- a/src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp
+++ b/src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp
@@ -176,6 +176,8 @@ public:
176 } else if (!sealed_blocks.contains(block)) { 176 } else if (!sealed_blocks.contains(block)) {
177 // Incomplete CFG 177 // Incomplete CFG
178 IR::Inst* phi{&*block->PrependNewInst(block->begin(), IR::Opcode::Phi)}; 178 IR::Inst* phi{&*block->PrependNewInst(block->begin(), IR::Opcode::Phi)};
179 phi->SetFlags(IR::TypeOf(UndefOpcode(variable)));
180
179 incomplete_phis[block].insert_or_assign(variable, phi); 181 incomplete_phis[block].insert_or_assign(variable, phi);
180 stack.back().result = IR::Value{&*phi}; 182 stack.back().result = IR::Value{&*phi};
181 } else if (const std::span imm_preds{block->ImmediatePredecessors()}; 183 } else if (const std::span imm_preds{block->ImmediatePredecessors()};
@@ -187,6 +189,8 @@ public:
187 } else { 189 } else {
188 // Break potential cycles with operandless phi 190 // Break potential cycles with operandless phi
189 IR::Inst* const phi{&*block->PrependNewInst(block->begin(), IR::Opcode::Phi)}; 191 IR::Inst* const phi{&*block->PrependNewInst(block->begin(), IR::Opcode::Phi)};
192 phi->SetFlags(IR::TypeOf(UndefOpcode(variable)));
193
190 WriteVariable(variable, block, IR::Value{phi}); 194 WriteVariable(variable, block, IR::Value{phi});
191 195
192 stack.back().phi = phi; 196 stack.back().phi = phi;