summaryrefslogtreecommitdiff
path: root/lib/Target
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2011-10-01 09:30:42 +0000
committerBill Wendling <isanbard@gmail.com>2011-10-01 09:30:42 +0000
commit3320f2a3bfd4daec23ba7ceb50525140cc6316da (patch)
treed5fcd8bed487b3dae083f47637cec036864054c0 /lib/Target
parent9c18f51daaf89b9c706aa0557bede2cbb0debb69 (diff)
downloadllvm-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.cpp2
-rw-r--r--lib/Target/ARM/ARMBaseInstrInfo.cpp6
-rw-r--r--lib/Target/ARM/ARMConstantPoolValue.cpp26
-rw-r--r--lib/Target/ARM/ARMConstantPoolValue.h15
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; }