14 #ifndef LLVM_LIB_TARGET_ARM_ARMCONSTANTPOOLVALUE_H 15 #define LLVM_LIB_TARGET_ARM_ARMCONSTANTPOOLVALUE_H 32 class MachineBasicBlock;
65 unsigned char PCAdjust;
68 bool AddCurrentAddress;
73 bool AddCurrentAddress);
77 bool AddCurrentAddress);
79 template <
typename Derived>
82 unsigned AlignMask = Alignment - 1;
84 for (
unsigned i = 0, e = Constants.size(); i != e; ++i) {
85 if (Constants[i].isMachineConstantPoolEntry() &&
86 (Constants[i].getAlignment() & AlignMask) == 0) {
89 if (Derived *APC = dyn_cast<Derived>(CPV))
90 if (cast<Derived>(
this)->equals(APC))
118 unsigned Alignment)
override;
127 return this->LabelId == A->LabelId &&
128 this->PCAdjust == A->PCAdjust &&
129 this->Modifier == A->Modifier;
153 bool AddCurrentAddress);
159 bool AddCurrentAddress);
170 unsigned char PCAdj);
175 bool AddCurrentAddress);
191 unsigned Alignment)
override;
218 bool AddCurrentAddress);
222 unsigned char PCAdj);
227 unsigned Alignment)
override;
253 bool AddCurrentAddress);
258 unsigned ID,
unsigned char PCAdj);
263 unsigned Alignment)
override;
284 #endif // LLVM_LIB_TARGET_ARM_ARMCONSTANTPOOLVALUE_H
The MachineConstantPool class keeps track of constants referenced by a function which must be spilled...
Type
MessagePack types as defined in the standard, with the exception of Integer being divided into a sign...
bool isGlobalValue() const
This class represents lattice values for constants.
static bool classof(const ARMConstantPoolValue *APV)
ARMConstantPoolValue - ARM specific constantpool value.
This provides a very simple, boring adaptor for a begin and end iterator into a range type...
bool equals(const ARMConstantPoolSymbol *A) const
Global Offset Table, Thread Pointer Offset.
unsigned char getPCAdjustment() const
bool isPromotedGlobal() const
Global Offset Table, PC Relative.
bool equals(const ARMConstantPoolValue *A) const
bool mustAddCurrentAddress() const
ARMCP::ARMCPModifier getModifier() const
The address of a basic block.
This file declares the MachineConstantPool class which is an abstract constant pool to keep track of ...
void print(raw_ostream *O) const
bool isMachineBasicBlock() const
void print(raw_ostream &O) const override
print - Implement operator<<
static bool classof(const ARMConstantPoolValue *ACPV)
bool equals(const ARMConstantPoolConstant *A) const
FoldingSetNodeID - This class is used to gather all the unique data bits of a node.
static bool classof(const ARMConstantPoolValue *ACPV)
void dump(const SparseBitVector< ElementSize > &LHS, raw_ostream &out)
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.
Thread Local Storage (General Dynamic Mode)
static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val)
StringRef getSymbol() const
Abstract base class for all machine specific constantpool value subclasses.
const MachineBasicBlock * getMBB() const
const std::vector< MachineConstantPoolEntry > & getConstants() const
SmallPtrSetIterator - This implements a const_iterator for SmallPtrSet.
ARMConstantPoolConstant - ARM-specific constant pool values for Constants, Functions, and BlockAddresses.
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements...
ARMConstantPoolSymbol - ARM-specific constantpool values for external symbols.
bool equals(const ARMConstantPoolMBB *A) const
ARMConstantPoolMBB - ARM-specific constantpool value of a machine basic block.
A range adaptor for a pair of iterators.
bool isBlockAddress() const
Section Relative (Windows TLS)
iterator_range< promoted_iterator > promotedGlobals()
raw_ostream & operator<<(raw_ostream &OS, const APInt &I)
unsigned getLabelId() const
This class implements an extremely fast bulk output stream that can only output to a stream...
StringRef - Represent a constant reference to a string, i.e.
const Constant * getPromotedGlobalInit() const
int getExistingMachineCPValueImpl(MachineConstantPool *CP, unsigned Alignment)