diff options
| author | Bill Wendling <isanbard@gmail.com> | 2011-09-29 23:48:44 +0000 |
|---|---|---|
| committer | Bill Wendling <isanbard@gmail.com> | 2011-09-29 23:48:44 +0000 |
| commit | a1127b2fa26ee63c3ffc790298654295cacdd2f6 (patch) | |
| tree | a3b136c7037daf1ce42e9195b52f101f2cbf8747 /llvm/lib/Target/ARM/ARMConstantPoolValue.cpp | |
| parent | 6c7f56192fa6e689ef14d32e43a785de5692e9c0 (diff) | |
| download | bcm5719-llvm-a1127b2fa26ee63c3ffc790298654295cacdd2f6.tar.gz bcm5719-llvm-a1127b2fa26ee63c3ffc790298654295cacdd2f6.zip | |
Support creating a constant pool value for a machine basic block.
This is used when we want to take the address of a machine basic block, but it's
not associated with a BB in LLVM IR.
llvm-svn: 140823
Diffstat (limited to 'llvm/lib/Target/ARM/ARMConstantPoolValue.cpp')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMConstantPoolValue.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMConstantPoolValue.cpp b/llvm/lib/Target/ARM/ARMConstantPoolValue.cpp index 476d59f988b..dccdefbfe89 100644 --- a/llvm/lib/Target/ARM/ARMConstantPoolValue.cpp +++ b/llvm/lib/Target/ARM/ARMConstantPoolValue.cpp @@ -17,6 +17,7 @@ #include "llvm/Constants.h" #include "llvm/GlobalValue.h" #include "llvm/Type.h" +#include "llvm/CodeGen/MachineBasicBlock.h" #include "llvm/Support/raw_ostream.h" #include <cstdlib> using namespace llvm; @@ -31,6 +32,17 @@ ARMConstantPoolValue::ARMConstantPoolValue(const Constant *cval, unsigned id, Modifier(Modif), AddCurrentAddress(AddCA) {} 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)), + CVal(NULL), MBB(mbb), S(NULL), LabelId(id), Kind(K), PCAdjust(PCAdj), + Modifier(Modif), AddCurrentAddress(AddCA) {} + +ARMConstantPoolValue::ARMConstantPoolValue(LLVMContext &C, const char *s, unsigned id, unsigned char PCAdj, ARMCP::ARMCPModifier Modif, @@ -53,6 +65,10 @@ const BlockAddress *ARMConstantPoolValue::getBlockAddress() const { return dyn_cast_or_null<BlockAddress>(CVal); } +const MachineBasicBlock *ARMConstantPoolValue::getMBB() const { + return MBB; +} + static bool CPV_streq(const char *S1, const char *S2) { if (S1 == S2) return true; @@ -119,6 +135,8 @@ void ARMConstantPoolValue::dump() const { void ARMConstantPoolValue::print(raw_ostream &O) const { if (CVal) O << CVal->getName(); + else if (MBB) + O << ""; else O << S; if (Modifier) O << "(" << getModifierText() << ")"; |

