Index: src/IceInstMIPS32.cpp |
diff --git a/src/IceInstMIPS32.cpp b/src/IceInstMIPS32.cpp |
index a508a8a90151560d01352bc73d917ee3e5637562..02b6d9baf1781210dee428a28b5d7db05bc2067a 100644 |
--- a/src/IceInstMIPS32.cpp |
+++ b/src/IceInstMIPS32.cpp |
@@ -283,13 +283,20 @@ InstMIPS32Call::InstMIPS32Call(Cfg *Func, Variable *Dest, Operand *CallTarget) |
addSource(CallTarget); |
} |
-InstMIPS32Mov::InstMIPS32Mov(Cfg *Func, Variable *Dest, Operand *Src) |
+InstMIPS32Mov::InstMIPS32Mov(Cfg *Func, Variable *Dest, Operand *Src, |
+ Operand *Src2) |
: InstMIPS32(Func, InstMIPS32::Mov, 2, Dest) { |
auto *Dest64 = llvm::dyn_cast<Variable64On32>(Dest); |
auto *Src64 = llvm::dyn_cast<Variable64On32>(Src); |
assert(Dest64 == nullptr || Src64 == nullptr); |
+ if (Dest->getType() == IceType_f64 && Src2 != nullptr) { |
+ addSource(Src); |
+ addSource(Src2); |
+ return; |
+ } |
+ |
if (Dest64 != nullptr) { |
// this-> is needed below because there is a parameter named Dest. |
this->Dest = Dest64->getLo(); |