diff options
Diffstat (limited to 'llvm/lib/Target/ARM')
-rw-r--r-- | llvm/lib/Target/ARM/ARMConstantIslandPass.cpp | 20 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/ARMInstrInfo.cpp | 18 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/ARMInstrInfo.h | 14 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/ARMRegisterInfo.cpp | 2 |
4 files changed, 17 insertions, 37 deletions
diff --git a/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp b/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp index a9f1f5b75f2..e7da3cffcf7 100644 --- a/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp +++ b/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp @@ -368,7 +368,7 @@ void ARMConstantIslands::InitialFunctionScan(MachineFunction &Fn, for (MachineBasicBlock::iterator I = MBB.begin(), E = MBB.end(); I != E; ++I) { // Add instruction size to MBBSize. - MBBSize += ARM::GetInstSize(I); + MBBSize += TII->GetInstSizeInBytes(I); int Opc = I->getOpcode(); if (I->getDesc().isBranch()) { @@ -519,7 +519,7 @@ unsigned ARMConstantIslands::GetOffsetOf(MachineInstr *MI) const { for (MachineBasicBlock::iterator I = MBB->begin(); ; ++I) { assert(I != MBB->end() && "Didn't find MI in its own basic block?"); if (&*I == MI) return Offset; - Offset += ARM::GetInstSize(I); + Offset += TII->GetInstSizeInBytes(I); } } @@ -617,7 +617,7 @@ MachineBasicBlock *ARMConstantIslands::SplitBlockBeforeInstr(MachineInstr *MI) { unsigned NewBBSize = 0; for (MachineBasicBlock::iterator I = NewBB->begin(), E = NewBB->end(); I != E; ++I) - NewBBSize += ARM::GetInstSize(I); + NewBBSize += TII->GetInstSizeInBytes(I); unsigned OrigBBI = OrigBB->getNumber(); unsigned NewBBI = NewBB->getNumber(); @@ -968,9 +968,9 @@ void ARMConstantIslands::CreateNewWater(unsigned CPUserIndex, MachineBasicBlock::iterator MI = UserMI; ++MI; unsigned CPUIndex = CPUserIndex+1; - for (unsigned Offset = UserOffset+ARM::GetInstSize(UserMI); + for (unsigned Offset = UserOffset+TII->GetInstSizeInBytes(UserMI); Offset < BaseInsertOffset; - Offset += ARM::GetInstSize(MI), + Offset += TII->GetInstSizeInBytes(MI), MI = next(MI)) { if (CPUIndex < CPUsers.size() && CPUsers[CPUIndex].MI == MI) { if (!OffsetIsInRange(Offset, EndInsertOffset, @@ -1225,7 +1225,7 @@ ARMConstantIslands::FixUpConditionalBr(MachineFunction &Fn, ImmBranch &Br) { SplitBlockBeforeInstr(MI); // No need for the branch to the next block. We're adding a unconditional // branch to the destination. - int delta = ARM::GetInstSize(&MBB->back()); + int delta = TII->GetInstSizeInBytes(&MBB->back()); BBSizes[MBB->getNumber()] -= delta; MachineBasicBlock* SplitBB = next(MachineFunction::iterator(MBB)); AdjustBBOffsetsAfter(SplitBB, -delta); @@ -1243,18 +1243,18 @@ ARMConstantIslands::FixUpConditionalBr(MachineFunction &Fn, ImmBranch &Br) { BuildMI(MBB, TII->get(MI->getOpcode())).addMBB(NextBB) .addImm(CC).addReg(CCReg); Br.MI = &MBB->back(); - BBSizes[MBB->getNumber()] += ARM::GetInstSize(&MBB->back()); + BBSizes[MBB->getNumber()] += TII->GetInstSizeInBytes(&MBB->back()); BuildMI(MBB, TII->get(Br.UncondBr)).addMBB(DestBB); - BBSizes[MBB->getNumber()] += ARM::GetInstSize(&MBB->back()); + BBSizes[MBB->getNumber()] += TII->GetInstSizeInBytes(&MBB->back()); unsigned MaxDisp = getUnconditionalBrDisp(Br.UncondBr); ImmBranches.push_back(ImmBranch(&MBB->back(), MaxDisp, false, Br.UncondBr)); // Remove the old conditional branch. It may or may not still be in MBB. - BBSizes[MI->getParent()->getNumber()] -= ARM::GetInstSize(MI); + BBSizes[MI->getParent()->getNumber()] -= TII->GetInstSizeInBytes(MI); MI->eraseFromParent(); // The net size change is an addition of one unconditional branch. - int delta = ARM::GetInstSize(&MBB->back()); + int delta = TII->GetInstSizeInBytes(&MBB->back()); AdjustBBOffsetsAfter(MBB, delta); return true; } diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.cpp b/llvm/lib/Target/ARM/ARMInstrInfo.cpp index 5650235082c..94ca6b09fde 100644 --- a/llvm/lib/Target/ARM/ARMInstrInfo.cpp +++ b/llvm/lib/Target/ARM/ARMInstrInfo.cpp @@ -877,8 +877,8 @@ static unsigned getNumJTEntries(const std::vector<MachineJumpTableEntry> &JT, /// GetInstSize - Return the size of the specified MachineInstr. /// -unsigned ARM::GetInstSize(MachineInstr *MI) { - MachineBasicBlock &MBB = *MI->getParent(); +unsigned ARMInstrInfo::GetInstSizeInBytes(const MachineInstr *MI) const { + const MachineBasicBlock &MBB = *MI->getParent(); const MachineFunction *MF = MBB.getParent(); const TargetAsmInfo *TAI = MF->getTarget().getTargetAsmInfo(); @@ -937,17 +937,3 @@ unsigned ARM::GetInstSize(MachineInstr *MI) { } return 0; // Not reached } - -/// GetFunctionSize - Returns the size of the specified MachineFunction. -/// -unsigned ARM::GetFunctionSize(MachineFunction &MF) { - unsigned FnSize = 0; - for (MachineFunction::iterator MBBI = MF.begin(), E = MF.end(); - MBBI != E; ++MBBI) { - MachineBasicBlock &MBB = *MBBI; - for (MachineBasicBlock::iterator I = MBB.begin(),E = MBB.end(); I != E; ++I) - FnSize += ARM::GetInstSize(I); - } - return FnSize; -} - diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.h b/llvm/lib/Target/ARM/ARMInstrInfo.h index 1988b95e2e0..7bcedd8329b 100644 --- a/llvm/lib/Target/ARM/ARMInstrInfo.h +++ b/llvm/lib/Target/ARM/ARMInstrInfo.h @@ -225,18 +225,12 @@ public: virtual bool DefinesPredicate(MachineInstr *MI, std::vector<MachineOperand> &Pred) const; + + /// GetInstSize - Returns the size of the specified MachineInstr. + /// + virtual unsigned GetInstSizeInBytes(const MachineInstr* MI) const; }; - // Utility routines - namespace ARM { - /// GetInstSize - Returns the size of the specified MachineInstr. - /// - unsigned GetInstSize(MachineInstr *MI); - - /// GetFunctionSize - Returns the size of the specified MachineFunction. - /// - unsigned GetFunctionSize(MachineFunction &MF); - } } #endif diff --git a/llvm/lib/Target/ARM/ARMRegisterInfo.cpp b/llvm/lib/Target/ARM/ARMRegisterInfo.cpp index a9d7d6c1c8d..7787f43ff61 100644 --- a/llvm/lib/Target/ARM/ARMRegisterInfo.cpp +++ b/llvm/lib/Target/ARM/ARMRegisterInfo.cpp @@ -948,7 +948,7 @@ ARMRegisterInfo::processFunctionBeforeCalleeSavedScan(MachineFunction &MF, bool ForceLRSpill = false; if (!LRSpilled && AFI->isThumbFunction()) { - unsigned FnSize = ARM::GetFunctionSize(MF); + unsigned FnSize = TII.GetFunctionSizeInBytes(MF); // Force LR to be spilled if the Thumb function size is > 2048. This enables // use of BL to implement far jump. If it turns out that it's not needed // then the branch fix up path will undo it. |