33 bool addCurrentAddress)
35 PCAdjust(PCAdj), Modifier(modifier),
36 AddCurrentAddress(addCurrentAddress) {}
42 bool addCurrentAddress)
44 LabelId(id),
Kind(kind), PCAdjust(PCAdj), Modifier(modifier),
45 AddCurrentAddress(addCurrentAddress) {}
84 if (ACPV->Kind == Kind &&
85 ACPV->PCAdjust == PCAdjust &&
86 ACPV->Modifier == Modifier &&
87 ACPV->LabelId == LabelId &&
88 ACPV->AddCurrentAddress == AddCurrentAddress) {
98 errs() <<
" " << *
this;
104 O <<
"-(LPC" << LabelId <<
"+" << (
unsigned)PCAdjust;
105 if (AddCurrentAddress) O <<
"-.";
114 ARMConstantPoolConstant::ARMConstantPoolConstant(
Type *Ty,
120 bool AddCurrentAddress)
124 ARMConstantPoolConstant::ARMConstantPoolConstant(
const Constant *
C,
129 bool AddCurrentAddress)
134 ARMConstantPoolConstant::ARMConstantPoolConstant(
const GlobalVariable *GV,
171 bool AddCurrentAddress) {
177 return dyn_cast_or_null<GlobalValue>(CVal);
181 return dyn_cast_or_null<BlockAddress>(CVal);
185 unsigned Alignment) {
186 return getExistingMachineCPValueImpl<ARMConstantPoolConstant>(
CP, Alignment);
209 unsigned id,
unsigned char PCAdj,
211 bool AddCurrentAddress)
218 unsigned char PCAdj) {
223 unsigned Alignment) {
224 return getExistingMachineCPValueImpl<ARMConstantPoolSymbol>(
CP, Alignment);
248 unsigned id,
unsigned char PCAdj,
250 bool AddCurrentAddress)
252 Modifier, AddCurrentAddress),
258 unsigned char PCAdj) {
263 unsigned Alignment) {
264 return getExistingMachineCPValueImpl<ARMConstantPoolMBB>(
CP, Alignment);
269 return ACPMBB && ACPMBB->MBB == MBB &&
void AddPointer(const void *Ptr)
Add* - Add various data types to Bit data.
The MachineConstantPool class keeps track of constants referenced by a function which must be spilled...
raw_ostream & errs()
This returns a reference to a raw_ostream for standard error.
static ARMConstantPoolSymbol * Create(LLVMContext &C, StringRef s, unsigned ID, unsigned char PCAdj)
#define LLVM_DUMP_METHOD
Mark debug helper function definitions like dump() that should not be stripped from debug builds...
int getNumber() const
MachineBasicBlocks are uniquely numbered at the function level, unless they're not in a MachineFuncti...
int getExistingMachineCPValue(MachineConstantPool *CP, unsigned Alignment) override
ARMConstantPoolValue - ARM specific constantpool value.
Global Offset Table, Thread Pointer Offset.
FunctionType * getType(LLVMContext &Context, ID id, ArrayRef< Type * > Tys=None)
Return the function type for an intrinsic.
Global Offset Table, PC Relative.
void print(raw_ostream &O) const override
print - Implement operator<<
const GlobalValue * getGV() const
ARMConstantPoolValue(Type *Ty, unsigned id, ARMCP::ARMCPKind Kind, unsigned char PCAdj, ARMCP::ARMCPModifier Modifier, bool AddCurrentAddress)
StringRef getName() const
Return a constant reference to the value's name.
The address of a basic block.
int getExistingMachineCPValue(MachineConstantPool *CP, unsigned Alignment) override
void AddInteger(signed I)
void print(raw_ostream &O) const override
print - Implement operator<<
const BlockAddress * getBlockAddress() const
int getExistingMachineCPValue(MachineConstantPool *CP, unsigned Alignment) override
Function Alias Analysis false
void addSelectionDAGCSEId(FoldingSetNodeID &ID) override
void addSelectionDAGCSEId(FoldingSetNodeID &ID) override
bool hasSameValue(ARMConstantPoolValue *ACPV) override
hasSameValue - Return true if this ARM constpool value can share the same constantpool entry as anoth...
FoldingSetNodeID - This class is used to gather all the unique data bits of a node.
The instances of the Type class are immutable: once they are created, they are never changed...
This is an important class for using LLVM in a threaded context.
This is an important base class in LLVM.
This file contains the declarations for the subclasses of Constant, which represent the different fla...
virtual bool hasSameValue(ARMConstantPoolValue *ACPV)
hasSameValue - Return true if this ARM constpool value can share the same constantpool entry as anoth...
bool hasSameValue(ARMConstantPoolValue *ACPV) override
hasSameValue - Return true if this ARM constpool value can share the same constantpool entry as anoth...
Thread Local Storage (General Dynamic Mode)
LLVMContext & getContext() const
All values hold a context through their type.
Abstract base class for all machine specific constantpool value subclasses.
void addSelectionDAGCSEId(FoldingSetNodeID &ID) override
static ARMConstantPoolMBB * Create(LLVMContext &C, const MachineBasicBlock *mbb, unsigned ID, unsigned char PCAdj)
void print(raw_ostream &O) const override
print - Implement operator<<
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
ARMConstantPoolConstant - ARM-specific constant pool values for Constants, Functions, and BlockAddresses.
ARMConstantPoolSymbol - ARM-specific constantpool values for external symbols.
bool hasSameValue(ARMConstantPoolValue *ACPV) override
hasSameValue - Return true if this ARM constpool value can share the same constantpool entry as anoth...
~ARMConstantPoolValue() override
ARMConstantPoolMBB - ARM-specific constantpool value of a machine basic block.
static GCRegistry::Add< ShadowStackGC > C("shadow-stack","Very portable GC for uncooperative code generators")
void addSelectionDAGCSEId(FoldingSetNodeID &ID) override
void print(raw_ostream &O) const override
print - Implement operator<<
Section Relative (Windows TLS)
static IntegerType * getInt32Ty(LLVMContext &C)
void AddString(StringRef String)
LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)
This class implements an extremely fast bulk output stream that can only output to a stream...
StringRef getModifierText() const
StringRef - Represent a constant reference to a string, i.e.
int getExistingMachineCPValue(MachineConstantPool *CP, unsigned Alignment) override
static ARMConstantPoolConstant * Create(const Constant *C, unsigned ID)