From: Bill Wendling Date: Sat, 1 Oct 2011 09:30:42 +0000 (+0000) Subject: Use the ARMConstantPoolMBB class to handle the MBB values. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=3320f2a3bfd4daec23ba7ceb50525140cc6316da;p=oota-llvm.git 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 --- diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index f4389db0a3e..81a36d16d77 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -856,7 +856,7 @@ EmitMachineConstantPoolValue(MachineConstantPoolValue *MCPV) { const GlobalValue *GV = cast(ACPV)->getGV(); MCSym = GetARMGVSymbol(GV); } else if (ACPV->isMachineBasicBlock()) { - const MachineBasicBlock *MBB = ACPV->getMBB(); + const MachineBasicBlock *MBB = cast(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 8b91dd00393..e4f4ab1a2a9 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(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 cdb747631dd..2c200bdf2f3 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 6b69cb6caa5..f1176f60fb0 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; }