mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-22 23:24:59 +00:00
add an API so target-independent codegen can determine if a constant
pool entry will require relocations against it. I implemented this conservatively for ARM, someone who is knowledgable about it should see if this can be improved. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76678 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -41,8 +41,22 @@ public:
|
||||
|
||||
/// getType - get type of this MachineConstantPoolValue.
|
||||
///
|
||||
inline const Type *getType() const { return Ty; }
|
||||
const Type *getType() const { return Ty; }
|
||||
|
||||
|
||||
/// getRelocatationInfo - This method classifies the entry according to
|
||||
/// whether or not it may generate a relocation entry. This must be
|
||||
/// conservative, so if it might codegen to a relocatable entry, it should say
|
||||
/// so. The return values are:
|
||||
///
|
||||
/// 0: This constant pool entry is guaranteed to never have a relocation
|
||||
/// applied to it (because it holds a simple constant like '4').
|
||||
/// 1: This entry has relocations, but the entries are guaranteed to be
|
||||
/// resolvable by the static linker, so the dynamic linker will never see
|
||||
/// them.
|
||||
/// 2: This entry may have arbitrary relocations.
|
||||
virtual unsigned getRelocatationInfo() const = 0;
|
||||
|
||||
virtual int getExistingMachineCPValue(MachineConstantPool *CP,
|
||||
unsigned Alignment) = 0;
|
||||
|
||||
@@ -94,6 +108,19 @@ public:
|
||||
}
|
||||
|
||||
const Type *getType() const;
|
||||
|
||||
/// getRelocatationInfo - This method classifies the entry according to
|
||||
/// whether or not it may generate a relocation entry. This must be
|
||||
/// conservative, so if it might codegen to a relocatable entry, it should say
|
||||
/// so. The return values are:
|
||||
///
|
||||
/// 0: This constant pool entry is guaranteed to never have a relocation
|
||||
/// applied to it (because it holds a simple constant like '4').
|
||||
/// 1: This entry has relocations, but the entries are guaranteed to be
|
||||
/// resolvable by the static linker, so the dynamic linker will never see
|
||||
/// them.
|
||||
/// 2: This entry may have arbitrary relocations.
|
||||
unsigned getRelocatationInfo() const;
|
||||
};
|
||||
|
||||
/// The MachineConstantPool class keeps track of constants referenced by a
|
||||
|
Reference in New Issue
Block a user