mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-06 03:08:43 +00:00
change isGlobalStubReference to take target flags instead of a MachineOperand.
llvm-svn: 75236
This commit is contained in:
parent
c4e0e9c987
commit
4e8de888f2
@ -301,7 +301,7 @@ static bool gvNeedsNonLazyPtr(const MachineOperand &GVOp,
|
||||
|
||||
// Return true if this is a reference to a stub containing the address of the
|
||||
// global, not the global itself.
|
||||
return isGlobalStubReference(GVOp);
|
||||
return isGlobalStubReference(GVOp.getTargetFlags());
|
||||
}
|
||||
|
||||
template<class CodeEmitter>
|
||||
|
@ -8839,6 +8839,7 @@ void X86TargetLowering::LowerAsmOperandForConstraint(SDValue Op,
|
||||
// Otherwise, this isn't something we can handle, reject it.
|
||||
return;
|
||||
}
|
||||
|
||||
// If we require an extra load to get this address, as in PIC mode, we
|
||||
// can't accept it.
|
||||
if (Subtarget->GVRequiresExtraLoad(GA->getGlobal(), getTargetMachine()))
|
||||
|
@ -789,7 +789,7 @@ static bool CanRematLoadWithDispOperand(const MachineOperand &MO,
|
||||
if (MO.isGlobal()) {
|
||||
// If this is a load of a stub, not of the global, we can remat it. This
|
||||
// access will always return the address of the global.
|
||||
if (isGlobalStubReference(MO))
|
||||
if (isGlobalStubReference(MO.getTargetFlags()))
|
||||
return true;
|
||||
|
||||
// If the global itself is constant, we can remat the load.
|
||||
@ -980,7 +980,7 @@ bool X86InstrInfo::isInvariantLoad(const MachineInstr *MI) const {
|
||||
return true;
|
||||
|
||||
if (MO.isGlobal())
|
||||
return isGlobalStubReference(MO);
|
||||
return isGlobalStubReference(MO.getTargetFlags());
|
||||
|
||||
// If this is a load from an invariant stack slot, the load is a constant.
|
||||
if (MO.isFI()) {
|
||||
|
@ -69,7 +69,8 @@ namespace X86 {
|
||||
/// instruction info tracks.
|
||||
///
|
||||
namespace X86II {
|
||||
enum {
|
||||
/// Target Operand Flag enum.
|
||||
enum TOF {
|
||||
//===------------------------------------------------------------------===//
|
||||
// X86 Specific MachineOperand flags.
|
||||
|
||||
@ -179,15 +180,13 @@ namespace X86II {
|
||||
/// which is a PIC-base-relative reference to a hidden dyld lazy pointer
|
||||
/// stub.
|
||||
MO_DARWIN_HIDDEN_NONLAZY_PIC_BASE = 17
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
/// isGlobalStubReference - Return true if the specified GlobalValue operand is
|
||||
/// isGlobalStubReference - Return true if the specified TargetFlag 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()) {
|
||||
inline static bool isGlobalStubReference(unsigned char TargetFlag) {
|
||||
switch (TargetFlag) {
|
||||
case X86II::MO_DLLIMPORT: // dllimport stub.
|
||||
case X86II::MO_GOTPCREL: // rip-relative GOT reference.
|
||||
case X86II::MO_GOT: // normal GOT reference.
|
||||
|
Loading…
Reference in New Issue
Block a user