1
0
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:
Chris Lattner 2009-07-10 06:06:17 +00:00
parent 41fccd30b7
commit a607a9c046

View File

@ -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.