diff options
Diffstat (limited to 'lib/Target/Hexagon/HexagonSplitConst32AndConst64.cpp')
-rw-r--r-- | lib/Target/Hexagon/HexagonSplitConst32AndConst64.cpp | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/lib/Target/Hexagon/HexagonSplitConst32AndConst64.cpp b/lib/Target/Hexagon/HexagonSplitConst32AndConst64.cpp index 8fdd493..ce6a39a 100644 --- a/lib/Target/Hexagon/HexagonSplitConst32AndConst64.cpp +++ b/lib/Target/Hexagon/HexagonSplitConst32AndConst64.cpp @@ -48,12 +48,9 @@ using namespace llvm; namespace { class HexagonSplitConst32AndConst64 : public MachineFunctionPass { - const HexagonTargetMachine &QTM; - public: static char ID; - HexagonSplitConst32AndConst64(const HexagonTargetMachine &TM) - : MachineFunctionPass(ID), QTM(TM) {} + HexagonSplitConst32AndConst64() : MachineFunctionPass(ID) {} const char *getPassName() const override { return "Hexagon Split Const32s and Const64s"; @@ -68,13 +65,12 @@ char HexagonSplitConst32AndConst64::ID = 0; bool HexagonSplitConst32AndConst64::runOnMachineFunction(MachineFunction &Fn) { const HexagonTargetObjectFile &TLOF = - (const HexagonTargetObjectFile &)QTM.getSubtargetImpl() - ->getTargetLowering() - ->getObjFileLowering(); + *static_cast<const HexagonTargetObjectFile *>( + Fn.getTarget().getObjFileLowering()); if (TLOF.IsSmallDataEnabled()) return true; - const TargetInstrInfo *TII = QTM.getSubtargetImpl()->getInstrInfo(); + const TargetInstrInfo *TII = Fn.getSubtarget().getInstrInfo(); // Loop over all of the basic blocks for (MachineFunction::iterator MBBb = Fn.begin(), MBBe = Fn.end(); @@ -117,9 +113,9 @@ bool HexagonSplitConst32AndConst64::runOnMachineFunction(MachineFunction &Fn) { MachineOperand &Symbol = MI->getOperand (1); BuildMI (*MBB, MII, MI->getDebugLoc(), - TII->get(Hexagon::LO_label), DestReg).addOperand(Symbol); + TII->get(Hexagon::LO_PIC), DestReg).addOperand(Symbol); BuildMI (*MBB, MII, MI->getDebugLoc(), - TII->get(Hexagon::HI_label), DestReg).addOperand(Symbol); + TII->get(Hexagon::HI_PIC), DestReg).addOperand(Symbol); // MBB->erase returns the iterator to the next instruction, which is the // one we want to process next MII = MBB->erase (MI); @@ -139,9 +135,9 @@ bool HexagonSplitConst32AndConst64::runOnMachineFunction(MachineFunction &Fn) { else if (Opc == Hexagon::CONST64_Int_Real) { int DestReg = MI->getOperand(0).getReg(); int64_t ImmValue = MI->getOperand(1).getImm (); - unsigned DestLo = QTM.getSubtargetImpl()->getRegisterInfo()->getSubReg( + unsigned DestLo = Fn.getSubtarget().getRegisterInfo()->getSubReg( DestReg, Hexagon::subreg_loreg); - unsigned DestHi = QTM.getSubtargetImpl()->getRegisterInfo()->getSubReg( + unsigned DestHi = Fn.getSubtarget().getRegisterInfo()->getSubReg( DestReg, Hexagon::subreg_hireg); int32_t LowWord = (ImmValue & 0xFFFFFFFF); @@ -176,6 +172,6 @@ bool HexagonSplitConst32AndConst64::runOnMachineFunction(MachineFunction &Fn) { //===----------------------------------------------------------------------===// FunctionPass * -llvm::createHexagonSplitConst32AndConst64(const HexagonTargetMachine &TM) { - return new HexagonSplitConst32AndConst64(TM); +llvm::createHexagonSplitConst32AndConst64() { + return new HexagonSplitConst32AndConst64(); } |