mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-21 03:53:04 +02:00
add a new predicate method that says whether a GlobalValue
MachineOperand is a reference to a stub, not a reference to the global variable itself. Look no context needed! llvm-svn: 75233
This commit is contained in:
parent
41fccd30b7
commit
a607a9c046
@ -178,8 +178,34 @@ namespace X86II {
|
|||||||
/// indicates that the reference is actually to "FOO$non_lazy_ptr -PICBASE",
|
/// indicates that the reference is actually to "FOO$non_lazy_ptr -PICBASE",
|
||||||
/// which is a PIC-base-relative reference to a hidden dyld lazy pointer
|
/// which is a PIC-base-relative reference to a hidden dyld lazy pointer
|
||||||
/// stub.
|
/// stub.
|
||||||
MO_DARWIN_HIDDEN_NONLAZY_PIC_BASE = 17,
|
MO_DARWIN_HIDDEN_NONLAZY_PIC_BASE = 17
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// isGlobalStubReference - Return true if the specified GlobalValue operand is
|
||||||
|
/// a reference to a stub for a global, not the global itself.
|
||||||
|
inline static bool isGlobalStubReference(const MachineOperand &MO) {
|
||||||
|
assert(MO.isGlobal() && "Predicate only works on globalvalue operands");
|
||||||
|
switch (MO.getTargetFlags()) {
|
||||||
|
case X86II::MO_DLLIMPORT: // dllimport stub.
|
||||||
|
case X86II::MO_GOTPCREL: // rip-relative GOT reference.
|
||||||
|
case X86II::MO_GOT: // normal GOT reference.
|
||||||
|
case X86II::MO_DARWIN_NONLAZY_PIC_BASE: // Normal $non_lazy_ptr ref.
|
||||||
|
case X86II::MO_DARWIN_NONLAZY: // Normal $non_lazy_ptr ref.
|
||||||
|
case X86II::MO_DARWIN_HIDDEN_NONLAZY_PIC_BASE: // Hidden $non_lazy_ptr ref.
|
||||||
|
case X86II::MO_DARWIN_HIDDEN_NONLAZY: // Hidden $non_lazy_ptr ref.
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// X86II - This namespace holds all of the target specific flags that
|
||||||
|
/// instruction info tracks.
|
||||||
|
///
|
||||||
|
namespace X86II {
|
||||||
|
enum {
|
||||||
//===------------------------------------------------------------------===//
|
//===------------------------------------------------------------------===//
|
||||||
// Instruction encodings. These are the standard/most common forms for X86
|
// Instruction encodings. These are the standard/most common forms for X86
|
||||||
// instructions.
|
// instructions.
|
||||||
|
Loading…
Reference in New Issue
Block a user