Index: src/IceTargetLoweringMIPS32.h |
diff --git a/src/IceTargetLoweringMIPS32.h b/src/IceTargetLoweringMIPS32.h |
index 72fc1cd72414d3e3d67e2c00bd5f5d8614d22289..d7027b121f53a5d98a87b4fadb4cb8d610c0a57e 100644 |
--- a/src/IceTargetLoweringMIPS32.h |
+++ b/src/IceTargetLoweringMIPS32.h |
@@ -365,6 +365,21 @@ public: |
} |
} |
+ void _mov_redefined(Variable *Dest, Operand *Src0, Operand *Src1 = nullptr) { |
+ if (llvm::isa<ConstantRelocatable>(Src0)) { |
+ Context.insert<InstMIPS32La>(Dest, Src0); |
+ } else { |
+ auto *Instr = Context.insert<InstMIPS32Mov>(Dest, Src0, Src1); |
+ Instr->setDestRedefined(); |
+ if (Instr->getDestHi() != nullptr) { |
+ // If Instr is multi-dest, then Dest must be a Variable64On32. We add a |
+ // fake-def for Instr.DestHi here. |
+ assert(llvm::isa<Variable64On32>(Dest)); |
+ Context.insert<InstFakeDef>(Instr->getDestHi()); |
+ } |
+ } |
+ } |
+ |
void _mov_d(Variable *Dest, Variable *Src) { |
Context.insert<InstMIPS32Mov_d>(Dest, Src); |
} |