diff options
author | Bill Wendling <isanbard@gmail.com> | 2011-10-01 09:30:42 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2011-10-01 09:30:42 +0000 |
commit | 3320f2a3bfd4daec23ba7ceb50525140cc6316da (patch) | |
tree | d5fcd8bed487b3dae083f47637cec036864054c0 /lib/Target | |
parent | 9c18f51daaf89b9c706aa0557bede2cbb0debb69 (diff) | |
download | llvm-3320f2a3bfd4daec23ba7ceb50525140cc6316da.tar.gz llvm-3320f2a3bfd4daec23ba7ceb50525140cc6316da.tar.bz2 llvm-3320f2a3bfd4daec23ba7ceb50525140cc6316da.tar.xz |
Use the ARMConstantPoolMBB class to handle the MBB values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140943 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
-rw-r--r-- | lib/Target/ARM/ARMAsmPrinter.cpp | 2 | ||||
-rw-r--r-- | lib/Target/ARM/ARMBaseInstrInfo.cpp | 6 | ||||
-rw-r--r-- | lib/Target/ARM/ARMConstantPoolValue.cpp | 26 | ||||
-rw-r--r-- | lib/Target/ARM/ARMConstantPoolValue.h | 15 |
4 files changed, 13 insertions, 36 deletions
diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index f4389db0a3..81a36d16d7 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -856,7 +856,7 @@ EmitMachineConstantPoolValue(MachineConstantPoolValue *MCPV) { const GlobalValue *GV = cast<ARMConstantPoolConstant>(ACPV)->getGV(); MCSym = GetARMGVSymbol(GV); } else if (ACPV->isMachineBasicBlock()) { - const MachineBasicBlock *MBB = ACPV->getMBB(); + const MachineBasicBlock *MBB = cast<ARMConstantPoolMBB>(ACPV)->getMBB(); MCSym = MBB->getSymbol(); } else { assert(ACPV->isExtSymbol() && "unrecognized constant pool value"); diff --git a/lib/Target/ARM/ARMBaseInstrInfo.cpp b/lib/Target/ARM/ARMBaseInstrInfo.cpp index 8b91dd0039..e4f4ab1a2a 100644 --- a/lib/Target/ARM/ARMBaseInstrInfo.cpp +++ b/lib/Target/ARM/ARMBaseInstrInfo.cpp @@ -1069,9 +1069,9 @@ static unsigned duplicateCPV(MachineFunction &MF, unsigned &CPI) { NewCPV = ARMConstantPoolConstant::Create(MF.getFunction(), PCLabelId, ARMCP::CPLSDA, 4); else if (ACPV->isMachineBasicBlock()) - NewCPV = new ARMConstantPoolValue(MF.getFunction()->getContext(), - ACPV->getMBB(), PCLabelId, - ARMCP::CPMachineBasicBlock, 4); + NewCPV = ARMConstantPoolMBB:: + Create(MF.getFunction()->getContext(), + cast<ARMConstantPoolMBB>(ACPV)->getMBB(), PCLabelId, 4); else llvm_unreachable("Unexpected ARM constantpool value type!!"); CPI = MCP->getConstantPoolIndex(NewCPV, MCPE.getAlignment()); diff --git a/lib/Target/ARM/ARMConstantPoolValue.cpp b/lib/Target/ARM/ARMConstantPoolValue.cpp index cdb747631d..2c200bdf2f 100644 --- a/lib/Target/ARM/ARMConstantPoolValue.cpp +++ b/lib/Target/ARM/ARMConstantPoolValue.cpp @@ -31,7 +31,7 @@ ARMConstantPoolValue::ARMConstantPoolValue(Type *Ty, unsigned id, unsigned char PCAdj, ARMCP::ARMCPModifier modifier, bool addCurrentAddress) - : MachineConstantPoolValue(Ty), MBB(NULL), LabelId(id), Kind(kind), + : MachineConstantPoolValue(Ty), LabelId(id), Kind(kind), PCAdjust(PCAdj), Modifier(modifier), AddCurrentAddress(addCurrentAddress) {} @@ -44,23 +44,8 @@ ARMConstantPoolValue::ARMConstantPoolValue(LLVMContext &C, unsigned id, LabelId(id), Kind(kind), PCAdjust(PCAdj), Modifier(modifier), AddCurrentAddress(addCurrentAddress) {} -ARMConstantPoolValue::ARMConstantPoolValue(LLVMContext &C, - const MachineBasicBlock *mbb, - unsigned id, - ARMCP::ARMCPKind K, - unsigned char PCAdj, - ARMCP::ARMCPModifier Modif, - bool AddCA) - : MachineConstantPoolValue((Type*)Type::getInt8PtrTy(C)), - MBB(mbb), LabelId(id), Kind(K), PCAdjust(PCAdj), - Modifier(Modif), AddCurrentAddress(AddCA) {} - ARMConstantPoolValue::~ARMConstantPoolValue() {} -const MachineBasicBlock *ARMConstantPoolValue::getMBB() const { - return MBB; -} - const char *ARMConstantPoolValue::getModifierText() const { switch (Modifier) { default: llvm_unreachable("Unknown modifier!"); @@ -120,8 +105,6 @@ void ARMConstantPoolValue::dump() const { } void ARMConstantPoolValue::print(raw_ostream &O) const { - if (MBB) - O << ""; if (Modifier) O << "(" << getModifierText() << ")"; if (PCAdjust != 0) { O << "-(LPC" << LabelId << "+" << (unsigned)PCAdjust; @@ -304,16 +287,17 @@ void ARMConstantPoolSymbol::print(raw_ostream &O) const { // ARMConstantPoolMBB //===----------------------------------------------------------------------===// -ARMConstantPoolMBB::ARMConstantPoolMBB(LLVMContext &C, MachineBasicBlock *mbb, +ARMConstantPoolMBB::ARMConstantPoolMBB(LLVMContext &C, + const MachineBasicBlock *mbb, unsigned id, unsigned char PCAdj, ARMCP::ARMCPModifier Modifier, bool AddCurrentAddress) - : ARMConstantPoolValue(C, mbb, id, ARMCP::CPMachineBasicBlock, PCAdj, + : ARMConstantPoolValue(C, id, ARMCP::CPMachineBasicBlock, PCAdj, Modifier, AddCurrentAddress), MBB(mbb) {} ARMConstantPoolMBB *ARMConstantPoolMBB::Create(LLVMContext &C, - MachineBasicBlock *mbb, + const MachineBasicBlock *mbb, unsigned ID, unsigned char PCAdj) { return new ARMConstantPoolMBB(C, mbb, ID, PCAdj, ARMCP::no_modifier, false); diff --git a/lib/Target/ARM/ARMConstantPoolValue.h b/lib/Target/ARM/ARMConstantPoolValue.h index 6b69cb6caa..f1176f60fb 100644 --- a/lib/Target/ARM/ARMConstantPoolValue.h +++ b/lib/Target/ARM/ARMConstantPoolValue.h @@ -49,7 +49,6 @@ namespace ARMCP { /// represent PC-relative displacement between the address of the load /// instruction and the constant being loaded, i.e. (&GV-(LPIC+8)). class ARMConstantPoolValue : public MachineConstantPoolValue { - const MachineBasicBlock *MBB; // MachineBasicBlock being loaded. unsigned LabelId; // Label id of the load. ARMCP::ARMCPKind Kind; // Kind of constant. unsigned char PCAdjust; // Extra adjustment if constantpool is pc-relative. @@ -66,15 +65,8 @@ protected: unsigned char PCAdj, ARMCP::ARMCPModifier Modifier, bool AddCurrentAddress); public: - ARMConstantPoolValue(LLVMContext &C, const MachineBasicBlock *mbb,unsigned id, - ARMCP::ARMCPKind Kind = ARMCP::CPValue, - unsigned char PCAdj = 0, - ARMCP::ARMCPModifier Modifier = ARMCP::no_modifier, - bool AddCurrentAddress = false); virtual ~ARMConstantPoolValue(); - const MachineBasicBlock *getMBB() const; - ARMCP::ARMCPModifier getModifier() const { return Modifier; } const char *getModifierText() const; bool hasModifier() const { return Modifier != ARMCP::no_modifier; } @@ -200,14 +192,15 @@ public: /// ARMConstantPoolMBB - ARM-specific constantpool value of a machine basic /// block. class ARMConstantPoolMBB : public ARMConstantPoolValue { - MachineBasicBlock *MBB; // Machine basic block. + const MachineBasicBlock *MBB; // Machine basic block. - ARMConstantPoolMBB(LLVMContext &C, MachineBasicBlock *mbb, unsigned id, + ARMConstantPoolMBB(LLVMContext &C, const MachineBasicBlock *mbb, unsigned id, unsigned char PCAdj, ARMCP::ARMCPModifier Modifier, bool AddCurrentAddress); public: - static ARMConstantPoolMBB *Create(LLVMContext &C, MachineBasicBlock *mbb, + static ARMConstantPoolMBB *Create(LLVMContext &C, + const MachineBasicBlock *mbb, unsigned ID, unsigned char PCAdj); const MachineBasicBlock *getMBB() const { return MBB; } |