Index: src/IceTargetLoweringX86BaseImpl.h |
diff --git a/src/IceTargetLoweringX86BaseImpl.h b/src/IceTargetLoweringX86BaseImpl.h |
index 0ac63b8b912240ccd15fc8ca1c188d12e2efb9a4..cf786f4de407c4dac5394fa49f26532cc49f36eb 100644 |
--- a/src/IceTargetLoweringX86BaseImpl.h |
+++ b/src/IceTargetLoweringX86BaseImpl.h |
@@ -25,6 +25,7 @@ |
#include "IceGlobalInits.h" |
#include "IceLiveness.h" |
#include "IceOperand.h" |
+#include "IcePhiLoweringImpl.h" |
#include "IceUtils.h" |
#include "llvm/Support/MathExtras.h" |
@@ -4696,30 +4697,8 @@ template <class Machine> void TargetX86Base<Machine>::prelowerPhis() { |
// Pause constant blinding or pooling, blinding or pooling will be done later |
// during phi lowering assignments |
BoolFlagSaver B(RandomizationPoolingPaused, true); |
- |
- CfgNode *Node = Context.getNode(); |
- for (Inst &I : Node->getPhis()) { |
- auto Phi = llvm::dyn_cast<InstPhi>(&I); |
- if (Phi->isDeleted()) |
- continue; |
- Variable *Dest = Phi->getDest(); |
- if (Dest->getType() == IceType_i64) { |
- Variable *DestLo = llvm::cast<Variable>(loOperand(Dest)); |
- Variable *DestHi = llvm::cast<Variable>(hiOperand(Dest)); |
- InstPhi *PhiLo = InstPhi::create(Func, Phi->getSrcSize(), DestLo); |
- InstPhi *PhiHi = InstPhi::create(Func, Phi->getSrcSize(), DestHi); |
- for (SizeT I = 0; I < Phi->getSrcSize(); ++I) { |
- Operand *Src = Phi->getSrc(I); |
- CfgNode *Label = Phi->getLabel(I); |
- Src = legalizeUndef(Src); |
- PhiLo->addArgument(loOperand(Src), Label); |
- PhiHi->addArgument(hiOperand(Src), Label); |
- } |
- Node->getPhis().push_back(PhiLo); |
- Node->getPhis().push_back(PhiHi); |
- Phi->setDeleted(); |
- } |
- } |
+ PhiLowering::prelowerPhis32Bit<TargetX86Base<Machine>>( |
+ this, Context.getNode(), Func); |
} |
bool isMemoryOperand(const Operand *Opnd) { |