diff --git a/Core/MIPS/IR/IRPassSimplify.cpp b/Core/MIPS/IR/IRPassSimplify.cpp index f6002fb46a..3ea09d11c5 100644 --- a/Core/MIPS/IR/IRPassSimplify.cpp +++ b/Core/MIPS/IR/IRPassSimplify.cpp @@ -273,7 +273,16 @@ bool PropagateConstants(const IRWriter &in, IRWriter &out) { break; case IROp::Downcount: - out.Write(inst); + case IROp::SetPCConst: + goto doDefault; + + case IROp::SetPC: + if (gpr.IsImm(inst.src1)) { + out.Write(IROp::SetPCConst, out.AddConstant(gpr.GetImm(inst.src1))); + } else { + gpr.MapIn(inst.src1); + goto doDefault; + } break; // FP-only instructions don't need to flush immediates.