mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-22 14:05:03 +00:00
Don't pass a Reloc::Model to GVIsIndirectSymbol.
It already has access to it. While at it, rename it to isGVIndirectSymbol. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274023 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b13ddb18db
commit
eeeea1e6dc
@ -910,8 +910,8 @@ getModifierVariantKind(ARMCP::ARMCPModifier Modifier) {
|
||||
MCSymbol *ARMAsmPrinter::GetARMGVSymbol(const GlobalValue *GV,
|
||||
unsigned char TargetFlags) {
|
||||
if (Subtarget->isTargetMachO()) {
|
||||
bool IsIndirect = (TargetFlags & ARMII::MO_NONLAZY) &&
|
||||
Subtarget->GVIsIndirectSymbol(GV, TM.getRelocationModel());
|
||||
bool IsIndirect =
|
||||
(TargetFlags & ARMII::MO_NONLAZY) && Subtarget->isGVIndirectSymbol(GV);
|
||||
|
||||
if (!IsIndirect)
|
||||
return getSymbol(GV);
|
||||
|
@ -4109,8 +4109,6 @@ void ARMBaseInstrInfo::expandLoadStackGuardBase(MachineBasicBlock::iterator MI,
|
||||
unsigned LoadImmOpc,
|
||||
unsigned LoadOpc) const {
|
||||
MachineBasicBlock &MBB = *MI->getParent();
|
||||
const TargetMachine &TM = MBB.getParent()->getTarget();
|
||||
Reloc::Model RM = TM.getRelocationModel();
|
||||
DebugLoc DL = MI->getDebugLoc();
|
||||
unsigned Reg = MI->getOperand(0).getReg();
|
||||
const GlobalValue *GV =
|
||||
@ -4120,7 +4118,7 @@ void ARMBaseInstrInfo::expandLoadStackGuardBase(MachineBasicBlock::iterator MI,
|
||||
BuildMI(MBB, MI, DL, get(LoadImmOpc), Reg)
|
||||
.addGlobalAddress(GV, 0, ARMII::MO_NONLAZY);
|
||||
|
||||
if (Subtarget.GVIsIndirectSymbol(GV, RM)) {
|
||||
if (Subtarget.isGVIndirectSymbol(GV)) {
|
||||
MIB = BuildMI(MBB, MI, DL, get(LoadOpc), Reg);
|
||||
MIB.addReg(Reg, RegState::Kill).addImm(0);
|
||||
unsigned Flag = MachineMemOperand::MOLoad | MachineMemOperand::MOInvariant;
|
||||
|
@ -547,8 +547,7 @@ unsigned ARMFastISel::ARMMaterializeGV(const GlobalValue *GV, MVT VT) {
|
||||
// For now 32-bit only.
|
||||
if (VT != MVT::i32 || GV->isThreadLocal()) return 0;
|
||||
|
||||
Reloc::Model RelocM = TM.getRelocationModel();
|
||||
bool IsIndirect = Subtarget->GVIsIndirectSymbol(GV, RelocM);
|
||||
bool IsIndirect = Subtarget->isGVIndirectSymbol(GV);
|
||||
const TargetRegisterClass *RC = isThumb2 ? &ARM::rGPRRegClass
|
||||
: &ARM::GPRRegClass;
|
||||
unsigned DestReg = createResultReg(RC);
|
||||
|
@ -2860,8 +2860,7 @@ SDValue ARMTargetLowering::LowerGlobalAddressDarwin(SDValue Op,
|
||||
SDValue G = DAG.getTargetGlobalAddress(GV, dl, PtrVT, 0, ARMII::MO_NONLAZY);
|
||||
SDValue Result = DAG.getNode(Wrapper, dl, PtrVT, G);
|
||||
|
||||
Reloc::Model RelocM = getTargetMachine().getRelocationModel();
|
||||
if (Subtarget->GVIsIndirectSymbol(GV, RelocM))
|
||||
if (Subtarget->isGVIndirectSymbol(GV))
|
||||
Result = DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), Result,
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
|
@ -94,7 +94,6 @@ void ARMInstrInfo::expandLoadStackGuard(MachineBasicBlock::iterator MI) const {
|
||||
MachineFunction &MF = *MI->getParent()->getParent();
|
||||
const ARMSubtarget &Subtarget = MF.getSubtarget<ARMSubtarget>();
|
||||
const TargetMachine &TM = MF.getTarget();
|
||||
Reloc::Model RM = TM.getRelocationModel();
|
||||
|
||||
if (!Subtarget.useMovt(MF)) {
|
||||
if (TM.isPositionIndependent())
|
||||
@ -112,7 +111,7 @@ void ARMInstrInfo::expandLoadStackGuard(MachineBasicBlock::iterator MI) const {
|
||||
const GlobalValue *GV =
|
||||
cast<GlobalValue>((*MI->memoperands_begin())->getValue());
|
||||
|
||||
if (!Subtarget.GVIsIndirectSymbol(GV, RM)) {
|
||||
if (!Subtarget.isGVIndirectSymbol(GV)) {
|
||||
expandLoadStackGuardBase(MI, ARM::MOV_ga_pcrel, ARM::LDRi12);
|
||||
return;
|
||||
}
|
||||
|
@ -260,17 +260,14 @@ bool ARMSubtarget::isAAPCS16_ABI() const {
|
||||
return TM.TargetABI == ARMBaseTargetMachine::ARM_ABI_AAPCS16;
|
||||
}
|
||||
|
||||
/// true if the GV will be accessed via an indirect symbol.
|
||||
bool
|
||||
ARMSubtarget::GVIsIndirectSymbol(const GlobalValue *GV,
|
||||
Reloc::Model RelocM) const {
|
||||
bool ARMSubtarget::isGVIndirectSymbol(const GlobalValue *GV) const {
|
||||
if (!TM.shouldAssumeDSOLocal(*GV->getParent(), GV))
|
||||
return true;
|
||||
|
||||
// 32 bit macho has no relocation for a-b if a is undefined, even if b is in
|
||||
// the section that is being relocated. This means we have to use o load even
|
||||
// for GVs that are known to be local to the dso.
|
||||
if (isTargetDarwin() && RelocM == Reloc::PIC_ &&
|
||||
if (isTargetDarwin() && TM.isPositionIndependent() &&
|
||||
(GV->isDeclarationForLinker() || GV->hasCommonLinkage()))
|
||||
return true;
|
||||
|
||||
|
@ -582,9 +582,8 @@ public:
|
||||
return PreISelOperandLatencyAdjustment;
|
||||
}
|
||||
|
||||
/// GVIsIndirectSymbol - true if the GV will be accessed via an indirect
|
||||
/// symbol.
|
||||
bool GVIsIndirectSymbol(const GlobalValue *GV, Reloc::Model RelocM) const;
|
||||
/// True if the GV will be accessed via an indirect symbol.
|
||||
bool isGVIndirectSymbol(const GlobalValue *GV) const;
|
||||
|
||||
/// True if fast-isel is used.
|
||||
bool useFastISel() const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user