forked from OSchip/llvm-project
PseudoSourceValue: Replace global manager with a manager in a machine function.
This commit removes the global manager variable which is responsible for storing and allocating pseudo source values and instead it introduces a new manager class named 'PseudoSourceValueManager'. Machine functions now own an instance of the pseudo source value manager class. This commit also modifies the 'get...' methods in the 'MachinePointerInfo' class to construct pseudo source values using the instance of the pseudo source value manager object from the machine function. This commit updates calls to the 'get...' methods from the 'MachinePointerInfo' class in a lot of different files because those calls now need to pass in a reference to a machine function to those methods. This change will make it easier to serialize pseudo source values as it will enable me to transform the mips specific MipsCallEntry PseudoSourceValue subclass into two target independent subclasses. Reviewers: Akira Hatanaka llvm-svn: 244693
This commit is contained in:
parent
4f9caf2b28
commit
e40c8a2b26
|
@ -38,6 +38,7 @@ class MachineJumpTableInfo;
|
|||
class MachineModuleInfo;
|
||||
class MCContext;
|
||||
class Pass;
|
||||
class PseudoSourceValueManager;
|
||||
class TargetMachine;
|
||||
class TargetSubtargetInfo;
|
||||
class TargetRegisterClass;
|
||||
|
@ -145,6 +146,9 @@ class MachineFunction {
|
|||
/// True if the function includes any inline assembly.
|
||||
bool HasInlineAsm;
|
||||
|
||||
// Allocation management for pseudo source values.
|
||||
std::unique_ptr<PseudoSourceValueManager> PSVManager;
|
||||
|
||||
MachineFunction(const MachineFunction &) = delete;
|
||||
void operator=(const MachineFunction&) = delete;
|
||||
public:
|
||||
|
@ -155,6 +159,8 @@ public:
|
|||
MachineModuleInfo &getMMI() const { return MMI; }
|
||||
MCContext &getContext() const { return Ctx; }
|
||||
|
||||
PseudoSourceValueManager &getPSVManager() const { return *PSVManager; }
|
||||
|
||||
/// Return the DataLayout attached to the Module associated to this MF.
|
||||
const DataLayout &getDataLayout() const;
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ namespace llvm {
|
|||
class FoldingSetNodeID;
|
||||
class MDNode;
|
||||
class raw_ostream;
|
||||
class MachineFunction;
|
||||
class ModuleSlotTracker;
|
||||
|
||||
/// MachinePointerInfo - This class contains a discriminated union of
|
||||
|
@ -62,22 +63,23 @@ struct MachinePointerInfo {
|
|||
|
||||
/// getConstantPool - Return a MachinePointerInfo record that refers to the
|
||||
/// constant pool.
|
||||
static MachinePointerInfo getConstantPool();
|
||||
static MachinePointerInfo getConstantPool(MachineFunction &MF);
|
||||
|
||||
/// getFixedStack - Return a MachinePointerInfo record that refers to the
|
||||
/// the specified FrameIndex.
|
||||
static MachinePointerInfo getFixedStack(int FI, int64_t offset = 0);
|
||||
static MachinePointerInfo getFixedStack(MachineFunction &MF, int FI,
|
||||
int64_t Offset = 0);
|
||||
|
||||
/// getJumpTable - Return a MachinePointerInfo record that refers to a
|
||||
/// jump table entry.
|
||||
static MachinePointerInfo getJumpTable();
|
||||
static MachinePointerInfo getJumpTable(MachineFunction &MF);
|
||||
|
||||
/// getGOT - Return a MachinePointerInfo record that refers to a
|
||||
/// GOT entry.
|
||||
static MachinePointerInfo getGOT();
|
||||
static MachinePointerInfo getGOT(MachineFunction &MF);
|
||||
|
||||
/// getStack - stack pointer relative access.
|
||||
static MachinePointerInfo getStack(int64_t Offset);
|
||||
static MachinePointerInfo getStack(MachineFunction &MF, int64_t Offset);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#define LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
|
||||
|
||||
#include "llvm/IR/Value.h"
|
||||
#include <map>
|
||||
|
||||
namespace llvm {
|
||||
|
||||
|
@ -63,27 +64,6 @@ public:
|
|||
/// Return true if the memory pointed to by this PseudoSourceValue can ever
|
||||
/// alias an LLVM IR Value.
|
||||
virtual bool mayAlias(const MachineFrameInfo *) const;
|
||||
|
||||
/// A pseudo source value referencing a fixed stack frame entry,
|
||||
/// e.g., a spill slot.
|
||||
static const PseudoSourceValue *getFixedStack(int FI);
|
||||
|
||||
/// A pseudo source value referencing the area below the stack frame of
|
||||
/// a function, e.g., the argument space.
|
||||
static const PseudoSourceValue *getStack();
|
||||
|
||||
/// A pseudo source value referencing the global offset table
|
||||
/// (or something the like).
|
||||
static const PseudoSourceValue *getGOT();
|
||||
|
||||
/// A pseudo source value referencing the constant pool. Since constant
|
||||
/// pools are constant, this doesn't need to identify a specific constant
|
||||
/// pool entry.
|
||||
static const PseudoSourceValue *getConstantPool();
|
||||
|
||||
/// A pseudo source value referencing a jump table. Since jump tables are
|
||||
/// constant, this doesn't need to identify a specific jump table.
|
||||
static const PseudoSourceValue *getJumpTable();
|
||||
};
|
||||
|
||||
/// A specialized PseudoSourceValue for holding FixedStack values, which must
|
||||
|
@ -110,6 +90,36 @@ public:
|
|||
int getFrameIndex() const { return FI; }
|
||||
};
|
||||
|
||||
/// Manages creation of pseudo source values.
|
||||
class PseudoSourceValueManager {
|
||||
const PseudoSourceValue StackPSV, GOTPSV, JumpTablePSV, ConstantPoolPSV;
|
||||
std::map<int, std::unique_ptr<FixedStackPseudoSourceValue>> FSValues;
|
||||
|
||||
public:
|
||||
PseudoSourceValueManager();
|
||||
|
||||
/// Return a pseudo source value referencing the area below the stack frame of
|
||||
/// a function, e.g., the argument space.
|
||||
const PseudoSourceValue *getStack();
|
||||
|
||||
/// Return a pseudo source value referencing the global offset table
|
||||
/// (or something the like).
|
||||
const PseudoSourceValue *getGOT();
|
||||
|
||||
/// Return a pseudo source value referencing the constant pool. Since constant
|
||||
/// pools are constant, this doesn't need to identify a specific constant
|
||||
/// pool entry.
|
||||
const PseudoSourceValue *getConstantPool();
|
||||
|
||||
/// Return a pseudo source value referencing a jump table. Since jump tables
|
||||
/// are constant, this doesn't need to identify a specific jump table.
|
||||
const PseudoSourceValue *getJumpTable();
|
||||
|
||||
/// Return a pseudo source value referencing a fixed stack frame entry,
|
||||
/// e.g., a spill slot.
|
||||
const PseudoSourceValue *getFixedStack(int FI);
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "llvm/CodeGen/MachineModuleInfo.h"
|
||||
#include "llvm/CodeGen/MachineRegisterInfo.h"
|
||||
#include "llvm/CodeGen/Passes.h"
|
||||
#include "llvm/CodeGen/PseudoSourceValue.h"
|
||||
#include "llvm/IR/DataLayout.h"
|
||||
#include "llvm/IR/DebugInfo.h"
|
||||
#include "llvm/IR/Function.h"
|
||||
|
@ -90,6 +91,8 @@ MachineFunction::MachineFunction(const Function *F, const TargetMachine &TM,
|
|||
assert(TM.isCompatibleDataLayout(getDataLayout()) &&
|
||||
"Can't create a MachineFunction using a Module with a "
|
||||
"Target-incompatible DataLayout attached\n");
|
||||
|
||||
PSVManager = llvm::make_unique<PseudoSourceValueManager>();
|
||||
}
|
||||
|
||||
MachineFunction::~MachineFunction() {
|
||||
|
|
|
@ -443,26 +443,28 @@ unsigned MachinePointerInfo::getAddrSpace() const {
|
|||
|
||||
/// getConstantPool - Return a MachinePointerInfo record that refers to the
|
||||
/// constant pool.
|
||||
MachinePointerInfo MachinePointerInfo::getConstantPool() {
|
||||
return MachinePointerInfo(PseudoSourceValue::getConstantPool());
|
||||
MachinePointerInfo MachinePointerInfo::getConstantPool(MachineFunction &MF) {
|
||||
return MachinePointerInfo(MF.getPSVManager().getConstantPool());
|
||||
}
|
||||
|
||||
/// getFixedStack - Return a MachinePointerInfo record that refers to the
|
||||
/// the specified FrameIndex.
|
||||
MachinePointerInfo MachinePointerInfo::getFixedStack(int FI, int64_t offset) {
|
||||
return MachinePointerInfo(PseudoSourceValue::getFixedStack(FI), offset);
|
||||
MachinePointerInfo MachinePointerInfo::getFixedStack(MachineFunction &MF,
|
||||
int FI, int64_t Offset) {
|
||||
return MachinePointerInfo(MF.getPSVManager().getFixedStack(FI), Offset);
|
||||
}
|
||||
|
||||
MachinePointerInfo MachinePointerInfo::getJumpTable() {
|
||||
return MachinePointerInfo(PseudoSourceValue::getJumpTable());
|
||||
MachinePointerInfo MachinePointerInfo::getJumpTable(MachineFunction &MF) {
|
||||
return MachinePointerInfo(MF.getPSVManager().getJumpTable());
|
||||
}
|
||||
|
||||
MachinePointerInfo MachinePointerInfo::getGOT() {
|
||||
return MachinePointerInfo(PseudoSourceValue::getGOT());
|
||||
MachinePointerInfo MachinePointerInfo::getGOT(MachineFunction &MF) {
|
||||
return MachinePointerInfo(MF.getPSVManager().getGOT());
|
||||
}
|
||||
|
||||
MachinePointerInfo MachinePointerInfo::getStack(int64_t Offset) {
|
||||
return MachinePointerInfo(PseudoSourceValue::getStack(), Offset);
|
||||
MachinePointerInfo MachinePointerInfo::getStack(MachineFunction &MF,
|
||||
int64_t Offset) {
|
||||
return MachinePointerInfo(MF.getPSVManager().getStack(), Offset);
|
||||
}
|
||||
|
||||
MachineMemOperand::MachineMemOperand(MachinePointerInfo ptrinfo, unsigned f,
|
||||
|
|
|
@ -922,7 +922,7 @@ static bool isLoadFromGOTOrConstantPool(MachineInstr &MI) {
|
|||
for (MachineInstr::mmo_iterator I = MI.memoperands_begin(),
|
||||
E = MI.memoperands_end(); I != E; ++I) {
|
||||
if (const PseudoSourceValue *PSV = (*I)->getPseudoValue()) {
|
||||
if (PSV == PSV->getGOT() || PSV == PSV->getConstantPool())
|
||||
if (PSV->isGOT() || PSV->isConstantPool())
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/CodeGen/PseudoSourceValue.h"
|
||||
#include "llvm/CodeGen/MachineFrameInfo.h"
|
||||
#include "llvm/IR/DerivedTypes.h"
|
||||
|
@ -22,44 +23,6 @@
|
|||
#include <map>
|
||||
using namespace llvm;
|
||||
|
||||
namespace {
|
||||
struct PSVGlobalsTy {
|
||||
// PseudoSourceValues are immutable so don't need locking.
|
||||
const PseudoSourceValue StackPSV, GOTPSV, JumpTablePSV, ConstantPoolPSV;
|
||||
sys::Mutex Lock; // Guards FSValues, but not the values inside it.
|
||||
std::map<int, const PseudoSourceValue *> FSValues;
|
||||
|
||||
PSVGlobalsTy()
|
||||
: StackPSV(PseudoSourceValue::Stack), GOTPSV(PseudoSourceValue::GOT),
|
||||
JumpTablePSV(PseudoSourceValue::JumpTable),
|
||||
ConstantPoolPSV(PseudoSourceValue::ConstantPool) {}
|
||||
~PSVGlobalsTy() {
|
||||
for (std::map<int, const PseudoSourceValue *>::iterator
|
||||
I = FSValues.begin(),
|
||||
E = FSValues.end();
|
||||
I != E; ++I) {
|
||||
delete I->second;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
static ManagedStatic<PSVGlobalsTy> PSVGlobals;
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
const PseudoSourceValue *PseudoSourceValue::getStack() {
|
||||
return &PSVGlobals->StackPSV;
|
||||
}
|
||||
const PseudoSourceValue *PseudoSourceValue::getGOT() {
|
||||
return &PSVGlobals->GOTPSV;
|
||||
}
|
||||
const PseudoSourceValue *PseudoSourceValue::getJumpTable() {
|
||||
return &PSVGlobals->JumpTablePSV;
|
||||
}
|
||||
const PseudoSourceValue *PseudoSourceValue::getConstantPool() {
|
||||
return &PSVGlobals->ConstantPoolPSV;
|
||||
}
|
||||
|
||||
static const char *const PSVNames[] = {
|
||||
"Stack", "GOT", "JumpTable", "ConstantPool", "FixedStack", "MipsCallEntry"};
|
||||
|
||||
|
@ -71,15 +34,6 @@ void PseudoSourceValue::printCustom(raw_ostream &O) const {
|
|||
O << PSVNames[Kind];
|
||||
}
|
||||
|
||||
const PseudoSourceValue *PseudoSourceValue::getFixedStack(int FI) {
|
||||
PSVGlobalsTy &PG = *PSVGlobals;
|
||||
sys::ScopedLock locked(PG.Lock);
|
||||
const PseudoSourceValue *&V = PG.FSValues[FI];
|
||||
if (!V)
|
||||
V = new FixedStackPseudoSourceValue(FI);
|
||||
return V;
|
||||
}
|
||||
|
||||
bool PseudoSourceValue::isConstant(const MachineFrameInfo *) const {
|
||||
if (isStack())
|
||||
return false;
|
||||
|
@ -121,3 +75,29 @@ bool FixedStackPseudoSourceValue::mayAlias(const MachineFrameInfo *MFI) const {
|
|||
void FixedStackPseudoSourceValue::printCustom(raw_ostream &OS) const {
|
||||
OS << "FixedStack" << FI;
|
||||
}
|
||||
|
||||
PseudoSourceValueManager::PseudoSourceValueManager()
|
||||
: StackPSV(PseudoSourceValue::Stack), GOTPSV(PseudoSourceValue::GOT),
|
||||
JumpTablePSV(PseudoSourceValue::JumpTable),
|
||||
ConstantPoolPSV(PseudoSourceValue::ConstantPool) {}
|
||||
|
||||
const PseudoSourceValue *PseudoSourceValueManager::getStack() {
|
||||
return &StackPSV;
|
||||
}
|
||||
|
||||
const PseudoSourceValue *PseudoSourceValueManager::getGOT() { return &GOTPSV; }
|
||||
|
||||
const PseudoSourceValue *PseudoSourceValueManager::getConstantPool() {
|
||||
return &ConstantPoolPSV;
|
||||
}
|
||||
|
||||
const PseudoSourceValue *PseudoSourceValueManager::getJumpTable() {
|
||||
return &JumpTablePSV;
|
||||
}
|
||||
|
||||
const PseudoSourceValue *PseudoSourceValueManager::getFixedStack(int FI) {
|
||||
std::unique_ptr<FixedStackPseudoSourceValue> &V = FSValues[FI];
|
||||
if (!V)
|
||||
V = llvm::make_unique<FixedStackPseudoSourceValue>(FI);
|
||||
return V.get();
|
||||
}
|
||||
|
|
|
@ -13429,9 +13429,10 @@ SDValue DAGCombiner::SimplifySelectCC(SDLoc DL, SDValue N0, SDValue N1,
|
|||
CPIdx = DAG.getNode(ISD::ADD, DL, CPIdx.getValueType(), CPIdx,
|
||||
CstOffset);
|
||||
AddToWorklist(CPIdx.getNode());
|
||||
return DAG.getLoad(TV->getValueType(0), DL, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(), false,
|
||||
false, false, Alignment);
|
||||
return DAG.getLoad(
|
||||
TV->getValueType(0), DL, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
|
||||
false, false, false, Alignment);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -273,17 +273,16 @@ SelectionDAGLegalize::ExpandConstantFP(ConstantFPSDNode *CFP, bool UseCP) {
|
|||
DAG.getConstantPool(LLVMC, TLI.getPointerTy(DAG.getDataLayout()));
|
||||
unsigned Alignment = cast<ConstantPoolSDNode>(CPIdx)->getAlignment();
|
||||
if (Extend) {
|
||||
SDValue Result =
|
||||
DAG.getExtLoad(ISD::EXTLOAD, dl, OrigVT,
|
||||
DAG.getEntryNode(),
|
||||
CPIdx, MachinePointerInfo::getConstantPool(),
|
||||
VT, false, false, false, Alignment);
|
||||
SDValue Result = DAG.getExtLoad(
|
||||
ISD::EXTLOAD, dl, OrigVT, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), VT,
|
||||
false, false, false, Alignment);
|
||||
return Result;
|
||||
}
|
||||
SDValue Result =
|
||||
DAG.getLoad(OrigVT, dl, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(), false, false, false,
|
||||
Alignment);
|
||||
DAG.getLoad(OrigVT, dl, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
|
||||
false, false, false, Alignment);
|
||||
return Result;
|
||||
}
|
||||
|
||||
|
@ -594,9 +593,10 @@ PerformInsertVectorEltInMemory(SDValue Vec, SDValue Val, SDValue Idx,
|
|||
int SPFI = cast<FrameIndexSDNode>(StackPtr.getNode())->getIndex();
|
||||
|
||||
// Store the vector.
|
||||
SDValue Ch = DAG.getStore(DAG.getEntryNode(), dl, Tmp1, StackPtr,
|
||||
MachinePointerInfo::getFixedStack(SPFI),
|
||||
false, false, 0);
|
||||
SDValue Ch = DAG.getStore(
|
||||
DAG.getEntryNode(), dl, Tmp1, StackPtr,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SPFI), false,
|
||||
false, 0);
|
||||
|
||||
// Truncate or zero extend offset to target pointer type.
|
||||
Tmp3 = DAG.getZExtOrTrunc(Tmp3, dl, PtrVT);
|
||||
|
@ -609,9 +609,9 @@ PerformInsertVectorEltInMemory(SDValue Vec, SDValue Val, SDValue Idx,
|
|||
Ch = DAG.getTruncStore(Ch, dl, Tmp2, StackPtr2, MachinePointerInfo(), EltVT,
|
||||
false, false, 0);
|
||||
// Load the updated vector.
|
||||
return DAG.getLoad(VT, dl, Ch, StackPtr,
|
||||
MachinePointerInfo::getFixedStack(SPFI), false, false,
|
||||
false, 0);
|
||||
return DAG.getLoad(VT, dl, Ch, StackPtr, MachinePointerInfo::getFixedStack(
|
||||
DAG.getMachineFunction(), SPFI),
|
||||
false, false, false, 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1478,7 +1478,8 @@ SDValue SelectionDAGLegalize::ExpandInsertToVectorThroughStack(SDValue Op) {
|
|||
|
||||
SDValue StackPtr = DAG.CreateStackTemporary(Vec.getValueType());
|
||||
int FI = cast<FrameIndexSDNode>(StackPtr.getNode())->getIndex();
|
||||
MachinePointerInfo PtrInfo = MachinePointerInfo::getFixedStack(FI);
|
||||
MachinePointerInfo PtrInfo =
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI);
|
||||
|
||||
// First store the whole vector.
|
||||
SDValue Ch = DAG.getStore(DAG.getEntryNode(), dl, Vec, StackPtr, PtrInfo,
|
||||
|
@ -1516,7 +1517,8 @@ SDValue SelectionDAGLegalize::ExpandVectorBuildThroughStack(SDNode* Node) {
|
|||
SDLoc dl(Node);
|
||||
SDValue FIPtr = DAG.CreateStackTemporary(VT);
|
||||
int FI = cast<FrameIndexSDNode>(FIPtr.getNode())->getIndex();
|
||||
MachinePointerInfo PtrInfo = MachinePointerInfo::getFixedStack(FI);
|
||||
MachinePointerInfo PtrInfo =
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI);
|
||||
|
||||
// Emit a store of each element to the stack slot.
|
||||
SmallVector<SDValue, 8> Stores;
|
||||
|
@ -1786,7 +1788,8 @@ SDValue SelectionDAGLegalize::EmitStackConvert(SDValue SrcOp,
|
|||
|
||||
FrameIndexSDNode *StackPtrFI = cast<FrameIndexSDNode>(FIPtr);
|
||||
int SPFI = StackPtrFI->getIndex();
|
||||
MachinePointerInfo PtrInfo = MachinePointerInfo::getFixedStack(SPFI);
|
||||
MachinePointerInfo PtrInfo =
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SPFI);
|
||||
|
||||
unsigned SrcSize = SrcOp.getValueType().getSizeInBits();
|
||||
unsigned SlotSize = SlotVT.getSizeInBits();
|
||||
|
@ -1826,14 +1829,14 @@ SDValue SelectionDAGLegalize::ExpandSCALAR_TO_VECTOR(SDNode *Node) {
|
|||
FrameIndexSDNode *StackPtrFI = cast<FrameIndexSDNode>(StackPtr);
|
||||
int SPFI = StackPtrFI->getIndex();
|
||||
|
||||
SDValue Ch = DAG.getTruncStore(DAG.getEntryNode(), dl, Node->getOperand(0),
|
||||
StackPtr,
|
||||
MachinePointerInfo::getFixedStack(SPFI),
|
||||
Node->getValueType(0).getVectorElementType(),
|
||||
false, false, 0);
|
||||
return DAG.getLoad(Node->getValueType(0), dl, Ch, StackPtr,
|
||||
MachinePointerInfo::getFixedStack(SPFI),
|
||||
false, false, false, 0);
|
||||
SDValue Ch = DAG.getTruncStore(
|
||||
DAG.getEntryNode(), dl, Node->getOperand(0), StackPtr,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SPFI),
|
||||
Node->getValueType(0).getVectorElementType(), false, false, 0);
|
||||
return DAG.getLoad(
|
||||
Node->getValueType(0), dl, Ch, StackPtr,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SPFI), false,
|
||||
false, false, 0);
|
||||
}
|
||||
|
||||
static bool
|
||||
|
@ -1999,9 +2002,10 @@ SDValue SelectionDAGLegalize::ExpandBUILD_VECTOR(SDNode *Node) {
|
|||
SDValue CPIdx =
|
||||
DAG.getConstantPool(CP, TLI.getPointerTy(DAG.getDataLayout()));
|
||||
unsigned Alignment = cast<ConstantPoolSDNode>(CPIdx)->getAlignment();
|
||||
return DAG.getLoad(VT, dl, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, Alignment);
|
||||
return DAG.getLoad(
|
||||
VT, dl, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, Alignment);
|
||||
}
|
||||
|
||||
SmallSet<SDValue, 16> DefinedValues;
|
||||
|
@ -2599,14 +2603,15 @@ SDValue SelectionDAGLegalize::ExpandLegalINT_TO_FP(bool isSigned,
|
|||
Alignment = std::min(Alignment, 4u);
|
||||
SDValue FudgeInReg;
|
||||
if (DestVT == MVT::f32)
|
||||
FudgeInReg = DAG.getLoad(MVT::f32, dl, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, Alignment);
|
||||
FudgeInReg = DAG.getLoad(
|
||||
MVT::f32, dl, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, Alignment);
|
||||
else {
|
||||
SDValue Load = DAG.getExtLoad(ISD::EXTLOAD, dl, DestVT,
|
||||
DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
MVT::f32, false, false, false, Alignment);
|
||||
SDValue Load = DAG.getExtLoad(
|
||||
ISD::EXTLOAD, dl, DestVT, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), MVT::f32,
|
||||
false, false, false, Alignment);
|
||||
HandleSDNode Handle(Load);
|
||||
LegalizeOp(Load.getNode());
|
||||
FudgeInReg = Handle.getValue();
|
||||
|
@ -3855,9 +3860,10 @@ void SelectionDAGLegalize::ExpandNode(SDNode *Node) {
|
|||
Index, Table);
|
||||
|
||||
EVT MemVT = EVT::getIntegerVT(*DAG.getContext(), EntrySize * 8);
|
||||
SDValue LD = DAG.getExtLoad(ISD::SEXTLOAD, dl, PTy, Chain, Addr,
|
||||
MachinePointerInfo::getJumpTable(), MemVT,
|
||||
false, false, false, 0);
|
||||
SDValue LD = DAG.getExtLoad(
|
||||
ISD::SEXTLOAD, dl, PTy, Chain, Addr,
|
||||
MachinePointerInfo::getJumpTable(DAG.getMachineFunction()), MemVT,
|
||||
false, false, false, 0);
|
||||
Addr = LD;
|
||||
if (TM.getRelocationModel() == Reloc::PIC_) {
|
||||
// For PIC, the sequence is:
|
||||
|
|
|
@ -2984,11 +2984,10 @@ SDValue DAGTypeLegalizer::ExpandIntOp_UINT_TO_FP(SDNode *N) {
|
|||
|
||||
// Load the value out, extending it from f32 to the destination float type.
|
||||
// FIXME: Avoid the extend by constructing the right constant pool?
|
||||
SDValue Fudge = DAG.getExtLoad(ISD::EXTLOAD, dl, DstVT, DAG.getEntryNode(),
|
||||
FudgePtr,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
MVT::f32,
|
||||
false, false, false, Alignment);
|
||||
SDValue Fudge = DAG.getExtLoad(
|
||||
ISD::EXTLOAD, dl, DstVT, DAG.getEntryNode(), FudgePtr,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), MVT::f32,
|
||||
false, false, false, Alignment);
|
||||
return DAG.getNode(ISD::FADD, dl, DstVT, SignedConv, Fudge);
|
||||
}
|
||||
|
||||
|
|
|
@ -161,7 +161,8 @@ void DAGTypeLegalizer::ExpandRes_BITCAST(SDNode *N, SDValue &Lo, SDValue &Hi) {
|
|||
NOutVT.getTypeForEVT(*DAG.getContext()));
|
||||
SDValue StackPtr = DAG.CreateStackTemporary(InVT, Alignment);
|
||||
int SPFI = cast<FrameIndexSDNode>(StackPtr.getNode())->getIndex();
|
||||
MachinePointerInfo PtrInfo = MachinePointerInfo::getFixedStack(SPFI);
|
||||
MachinePointerInfo PtrInfo =
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SPFI);
|
||||
|
||||
// Emit a store to the stack slot.
|
||||
SDValue Store = DAG.getStore(DAG.getEntryNode(), dl, InOp, StackPtr, PtrInfo,
|
||||
|
|
|
@ -4878,10 +4878,12 @@ SelectionDAG::getMemIntrinsicNode(unsigned Opcode, SDLoc dl, SDVTList VTList,
|
|||
/// MachinePointerInfo record from it. This is particularly useful because the
|
||||
/// code generator has many cases where it doesn't bother passing in a
|
||||
/// MachinePointerInfo to getLoad or getStore when it has "FI+Cst".
|
||||
static MachinePointerInfo InferPointerInfo(SDValue Ptr, int64_t Offset = 0) {
|
||||
static MachinePointerInfo InferPointerInfo(SelectionDAG &DAG, SDValue Ptr,
|
||||
int64_t Offset = 0) {
|
||||
// If this is FI+Offset, we can model it.
|
||||
if (const FrameIndexSDNode *FI = dyn_cast<FrameIndexSDNode>(Ptr))
|
||||
return MachinePointerInfo::getFixedStack(FI->getIndex(), Offset);
|
||||
return MachinePointerInfo::getFixedStack(DAG.getMachineFunction(),
|
||||
FI->getIndex(), Offset);
|
||||
|
||||
// If this is (FI+Offset1)+Offset2, we can model it.
|
||||
if (Ptr.getOpcode() != ISD::ADD ||
|
||||
|
@ -4890,20 +4892,22 @@ static MachinePointerInfo InferPointerInfo(SDValue Ptr, int64_t Offset = 0) {
|
|||
return MachinePointerInfo();
|
||||
|
||||
int FI = cast<FrameIndexSDNode>(Ptr.getOperand(0))->getIndex();
|
||||
return MachinePointerInfo::getFixedStack(FI, Offset+
|
||||
cast<ConstantSDNode>(Ptr.getOperand(1))->getSExtValue());
|
||||
return MachinePointerInfo::getFixedStack(
|
||||
DAG.getMachineFunction(), FI,
|
||||
Offset + cast<ConstantSDNode>(Ptr.getOperand(1))->getSExtValue());
|
||||
}
|
||||
|
||||
/// InferPointerInfo - If the specified ptr/offset is a frame index, infer a
|
||||
/// MachinePointerInfo record from it. This is particularly useful because the
|
||||
/// code generator has many cases where it doesn't bother passing in a
|
||||
/// MachinePointerInfo to getLoad or getStore when it has "FI+Cst".
|
||||
static MachinePointerInfo InferPointerInfo(SDValue Ptr, SDValue OffsetOp) {
|
||||
static MachinePointerInfo InferPointerInfo(SelectionDAG &DAG, SDValue Ptr,
|
||||
SDValue OffsetOp) {
|
||||
// If the 'Offset' value isn't a constant, we can't handle this.
|
||||
if (ConstantSDNode *OffsetNode = dyn_cast<ConstantSDNode>(OffsetOp))
|
||||
return InferPointerInfo(Ptr, OffsetNode->getSExtValue());
|
||||
return InferPointerInfo(DAG, Ptr, OffsetNode->getSExtValue());
|
||||
if (OffsetOp.getOpcode() == ISD::UNDEF)
|
||||
return InferPointerInfo(Ptr);
|
||||
return InferPointerInfo(DAG, Ptr);
|
||||
return MachinePointerInfo();
|
||||
}
|
||||
|
||||
|
@ -4932,7 +4936,7 @@ SelectionDAG::getLoad(ISD::MemIndexedMode AM, ISD::LoadExtType ExtType,
|
|||
// If we don't have a PtrInfo, infer the trivial frame index case to simplify
|
||||
// clients.
|
||||
if (PtrInfo.V.isNull())
|
||||
PtrInfo = InferPointerInfo(Ptr, Offset);
|
||||
PtrInfo = InferPointerInfo(*this, Ptr, Offset);
|
||||
|
||||
MachineFunction &MF = getMachineFunction();
|
||||
MachineMemOperand *MMO =
|
||||
|
@ -5060,7 +5064,7 @@ SDValue SelectionDAG::getStore(SDValue Chain, SDLoc dl, SDValue Val,
|
|||
Flags |= MachineMemOperand::MONonTemporal;
|
||||
|
||||
if (PtrInfo.V.isNull())
|
||||
PtrInfo = InferPointerInfo(Ptr);
|
||||
PtrInfo = InferPointerInfo(*this, Ptr);
|
||||
|
||||
MachineFunction &MF = getMachineFunction();
|
||||
MachineMemOperand *MMO =
|
||||
|
@ -5115,7 +5119,7 @@ SDValue SelectionDAG::getTruncStore(SDValue Chain, SDLoc dl, SDValue Val,
|
|||
Flags |= MachineMemOperand::MONonTemporal;
|
||||
|
||||
if (PtrInfo.V.isNull())
|
||||
PtrInfo = InferPointerInfo(Ptr);
|
||||
PtrInfo = InferPointerInfo(*this, Ptr);
|
||||
|
||||
MachineFunction &MF = getMachineFunction();
|
||||
MachineMemOperand *MMO =
|
||||
|
|
|
@ -1810,10 +1810,10 @@ void SelectionDAGBuilder::visitSPDescriptorParent(StackProtectorDescriptor &SPD,
|
|||
GuardPtr, MachinePointerInfo(IRGuard, 0),
|
||||
true, false, false, Align);
|
||||
|
||||
SDValue StackSlot = DAG.getLoad(PtrTy, dl, DAG.getEntryNode(),
|
||||
StackSlotPtr,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
true, false, false, Align);
|
||||
SDValue StackSlot = DAG.getLoad(
|
||||
PtrTy, dl, DAG.getEntryNode(), StackSlotPtr,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI), true,
|
||||
false, false, Align);
|
||||
|
||||
// Perform the comparison via a subtract/getsetcc.
|
||||
EVT VT = Guard.getValueType();
|
||||
|
@ -4775,8 +4775,8 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
|||
SDValue FIN = DAG.getFrameIndex(FI, PtrTy);
|
||||
|
||||
// Store the stack protector onto the stack.
|
||||
Res = DAG.getStore(Chain, sdl, Src, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
Res = DAG.getStore(Chain, sdl, Src, FIN, MachinePointerInfo::getFixedStack(
|
||||
DAG.getMachineFunction(), FI),
|
||||
true, false, 0);
|
||||
setValue(&I, Res);
|
||||
DAG.setRoot(Res);
|
||||
|
@ -6069,10 +6069,10 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCallSite CS) {
|
|||
int SSFI = MF.getFrameInfo()->CreateStackObject(TySize, Align, false);
|
||||
SDValue StackSlot =
|
||||
DAG.getFrameIndex(SSFI, TLI.getPointerTy(DAG.getDataLayout()));
|
||||
Chain = DAG.getStore(Chain, getCurSDLoc(),
|
||||
OpInfo.CallOperand, StackSlot,
|
||||
MachinePointerInfo::getFixedStack(SSFI),
|
||||
false, false, 0);
|
||||
Chain = DAG.getStore(
|
||||
Chain, getCurSDLoc(), OpInfo.CallOperand, StackSlot,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SSFI),
|
||||
false, false, 0);
|
||||
OpInfo.CallOperand = StackSlot;
|
||||
}
|
||||
|
||||
|
@ -7018,8 +7018,9 @@ TargetLowering::LowerCallTo(TargetLowering::CallLoweringInfo &CLI) const {
|
|||
PtrVT));
|
||||
SDValue L = CLI.DAG.getLoad(
|
||||
RetTys[i], CLI.DL, CLI.Chain, Add,
|
||||
MachinePointerInfo::getFixedStack(DemoteStackIdx, Offsets[i]), false,
|
||||
false, false, 1);
|
||||
MachinePointerInfo::getFixedStack(CLI.DAG.getMachineFunction(),
|
||||
DemoteStackIdx, Offsets[i]),
|
||||
false, false, false, 1);
|
||||
ReturnValues[i] = L;
|
||||
Chains[i] = L.getValue(1);
|
||||
}
|
||||
|
|
|
@ -427,7 +427,8 @@ spillIncomingStatepointValue(SDValue Incoming, SDValue Chain,
|
|||
// chaining stores one after another, this may allow
|
||||
// a bit more optimal scheduling for them
|
||||
Chain = Builder.DAG.getStore(Chain, Builder.getCurSDLoc(), Incoming, Loc,
|
||||
MachinePointerInfo::getFixedStack(Index),
|
||||
MachinePointerInfo::getFixedStack(
|
||||
Builder.DAG.getMachineFunction(), Index),
|
||||
false, false, 0);
|
||||
|
||||
Builder.StatepointLowering.setLocation(Incoming, Loc);
|
||||
|
@ -883,9 +884,10 @@ void SelectionDAGBuilder::visitGCRelocate(const CallInst &CI) {
|
|||
SDValue Chain = getRoot();
|
||||
|
||||
SDValue SpillLoad =
|
||||
DAG.getLoad(SpillSlot.getValueType(), getCurSDLoc(), Chain, SpillSlot,
|
||||
MachinePointerInfo::getFixedStack(*DerivedPtrLocation),
|
||||
false, false, false, 0);
|
||||
DAG.getLoad(SpillSlot.getValueType(), getCurSDLoc(), Chain, SpillSlot,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(),
|
||||
*DerivedPtrLocation),
|
||||
false, false, false, 0);
|
||||
|
||||
// Again, be conservative, don't emit pending loads
|
||||
DAG.setRoot(SpillLoad.getValue(1));
|
||||
|
|
|
@ -318,7 +318,7 @@ bool StackSlotColoring::ColorSlots(MachineFunction &MF) {
|
|||
if (NewFI == -1 || (NewFI == (int)SS))
|
||||
continue;
|
||||
|
||||
const PseudoSourceValue *NewSV = PseudoSourceValue::getFixedStack(NewFI);
|
||||
const PseudoSourceValue *NewSV = MF.getPSVManager().getFixedStack(NewFI);
|
||||
SmallVectorImpl<MachineMemOperand *> &RefMMOs = SSRefs[SS];
|
||||
for (unsigned i = 0, e = RefMMOs.size(); i != e; ++i)
|
||||
RefMMOs[i]->setValue(NewSV);
|
||||
|
|
|
@ -484,10 +484,9 @@ MachineInstr *TargetInstrInfo::foldMemoryOperand(MachineBasicBlock::iterator MI,
|
|||
"Folded a use to a non-load!");
|
||||
const MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
assert(MFI.getObjectOffset(FI) != -1);
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(FI),
|
||||
Flags, MFI.getObjectSize(FI),
|
||||
MFI.getObjectAlignment(FI));
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FI), Flags, MFI.getObjectSize(FI),
|
||||
MFI.getObjectAlignment(FI));
|
||||
NewMI->addMemOperand(MF, MMO);
|
||||
|
||||
return NewMI;
|
||||
|
|
|
@ -1152,7 +1152,7 @@ TargetLoweringBase::emitPatchPoint(MachineInstr *MI,
|
|||
Flags |= MachineMemOperand::MOVolatile;
|
||||
}
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(FI), Flags,
|
||||
MachinePointerInfo::getFixedStack(MF, FI), Flags,
|
||||
MF.getDataLayout().getPointerSize(), MFI.getObjectAlignment(FI));
|
||||
MIB->addMemOperand(MF, MMO);
|
||||
|
||||
|
|
|
@ -1058,8 +1058,8 @@ void AArch64FastISel::addLoadStoreOperands(Address &Addr,
|
|||
// FIXME: We shouldn't be using getObjectSize/getObjectAlignment. The size
|
||||
// and alignment should be based on the VT.
|
||||
MMO = FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(FI, Offset), Flags,
|
||||
MFI.getObjectSize(FI), MFI.getObjectAlignment(FI));
|
||||
MachinePointerInfo::getFixedStack(*FuncInfo.MF, FI, Offset), Flags,
|
||||
MFI.getObjectSize(FI), MFI.getObjectAlignment(FI));
|
||||
// Now add the rest of the operands.
|
||||
MIB.addFrameIndex(FI).addImm(Offset);
|
||||
} else {
|
||||
|
@ -3021,8 +3021,8 @@ bool AArch64FastISel::processCallArgs(CallLoweringInfo &CLI,
|
|||
|
||||
unsigned Alignment = DL.getABITypeAlignment(ArgVal->getType());
|
||||
MachineMemOperand *MMO = FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getStack(Addr.getOffset()),
|
||||
MachineMemOperand::MOStore, ArgVT.getStoreSize(), Alignment);
|
||||
MachinePointerInfo::getStack(*FuncInfo.MF, Addr.getOffset()),
|
||||
MachineMemOperand::MOStore, ArgVT.getStoreSize(), Alignment);
|
||||
|
||||
if (!emitStore(ArgVT, ArgReg, Addr, MMO))
|
||||
return false;
|
||||
|
|
|
@ -2462,9 +2462,10 @@ SDValue AArch64TargetLowering::LowerFormalArguments(
|
|||
break;
|
||||
}
|
||||
|
||||
ArgValue = DAG.getExtLoad(ExtType, DL, VA.getLocVT(), Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
MemVT, false, false, false, 0);
|
||||
ArgValue = DAG.getExtLoad(
|
||||
ExtType, DL, VA.getLocVT(), Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI),
|
||||
MemVT, false, false, false, 0);
|
||||
|
||||
InVals.push_back(ArgValue);
|
||||
}
|
||||
|
@ -2537,9 +2538,10 @@ void AArch64TargetLowering::saveVarArgRegisters(CCState &CCInfo,
|
|||
for (unsigned i = FirstVariadicGPR; i < NumGPRArgRegs; ++i) {
|
||||
unsigned VReg = MF.addLiveIn(GPRArgRegs[i], &AArch64::GPR64RegClass);
|
||||
SDValue Val = DAG.getCopyFromReg(Chain, DL, VReg, MVT::i64);
|
||||
SDValue Store =
|
||||
DAG.getStore(Val.getValue(1), DL, Val, FIN,
|
||||
MachinePointerInfo::getStack(i * 8), false, false, 0);
|
||||
SDValue Store = DAG.getStore(
|
||||
Val.getValue(1), DL, Val, FIN,
|
||||
MachinePointerInfo::getStack(DAG.getMachineFunction(), i * 8), false,
|
||||
false, 0);
|
||||
MemOps.push_back(Store);
|
||||
FIN =
|
||||
DAG.getNode(ISD::ADD, DL, PtrVT, FIN, DAG.getConstant(8, DL, PtrVT));
|
||||
|
@ -2566,9 +2568,10 @@ void AArch64TargetLowering::saveVarArgRegisters(CCState &CCInfo,
|
|||
unsigned VReg = MF.addLiveIn(FPRArgRegs[i], &AArch64::FPR128RegClass);
|
||||
SDValue Val = DAG.getCopyFromReg(Chain, DL, VReg, MVT::f128);
|
||||
|
||||
SDValue Store =
|
||||
DAG.getStore(Val.getValue(1), DL, Val, FIN,
|
||||
MachinePointerInfo::getStack(i * 16), false, false, 0);
|
||||
SDValue Store = DAG.getStore(
|
||||
Val.getValue(1), DL, Val, FIN,
|
||||
MachinePointerInfo::getStack(DAG.getMachineFunction(), i * 16),
|
||||
false, false, 0);
|
||||
MemOps.push_back(Store);
|
||||
FIN = DAG.getNode(ISD::ADD, DL, PtrVT, FIN,
|
||||
DAG.getConstant(16, DL, PtrVT));
|
||||
|
@ -3006,7 +3009,8 @@ AArch64TargetLowering::LowerCall(CallLoweringInfo &CLI,
|
|||
int FI = MF.getFrameInfo()->CreateFixedObject(OpSize, Offset, true);
|
||||
|
||||
DstAddr = DAG.getFrameIndex(FI, PtrVT);
|
||||
DstInfo = MachinePointerInfo::getFixedStack(FI);
|
||||
DstInfo =
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI);
|
||||
|
||||
// Make sure any stack arguments overlapping with where we're storing
|
||||
// are loaded before this eventual operation. Otherwise they'll be
|
||||
|
@ -3016,7 +3020,8 @@ AArch64TargetLowering::LowerCall(CallLoweringInfo &CLI,
|
|||
SDValue PtrOff = DAG.getIntPtrConstant(Offset, DL);
|
||||
|
||||
DstAddr = DAG.getNode(ISD::ADD, DL, PtrVT, StackPtr, PtrOff);
|
||||
DstInfo = MachinePointerInfo::getStack(LocMemOffset);
|
||||
DstInfo = MachinePointerInfo::getStack(DAG.getMachineFunction(),
|
||||
LocMemOffset);
|
||||
}
|
||||
|
||||
if (Outs[i].Flags.isByVal()) {
|
||||
|
@ -3258,11 +3263,12 @@ SDValue AArch64TargetLowering::LowerGlobalAddress(SDValue Op,
|
|||
unsigned char LoFlags = AArch64II::MO_PAGEOFF | AArch64II::MO_NC;
|
||||
SDValue Lo = DAG.getTargetConstantPool(GV, PtrVT, 0, 0, LoFlags);
|
||||
SDValue PoolAddr = DAG.getNode(AArch64ISD::ADDlow, DL, PtrVT, ADRP, Lo);
|
||||
SDValue GlobalAddr = DAG.getLoad(PtrVT, DL, DAG.getEntryNode(), PoolAddr,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
/*isVolatile=*/ false,
|
||||
/*isNonTemporal=*/ true,
|
||||
/*isInvariant=*/ true, 8);
|
||||
SDValue GlobalAddr = DAG.getLoad(
|
||||
PtrVT, DL, DAG.getEntryNode(), PoolAddr,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
|
||||
/*isVolatile=*/false,
|
||||
/*isNonTemporal=*/true,
|
||||
/*isInvariant=*/true, 8);
|
||||
if (GN->getOffset() != 0)
|
||||
return DAG.getNode(ISD::ADD, DL, PtrVT, GlobalAddr,
|
||||
DAG.getConstant(GN->getOffset(), DL, PtrVT));
|
||||
|
@ -3335,8 +3341,9 @@ AArch64TargetLowering::LowerDarwinGlobalTLSAddress(SDValue Op,
|
|||
// to obtain the address of the variable.
|
||||
SDValue Chain = DAG.getEntryNode();
|
||||
SDValue FuncTLVGet =
|
||||
DAG.getLoad(MVT::i64, DL, Chain, DescAddr, MachinePointerInfo::getGOT(),
|
||||
false, true, true, 8);
|
||||
DAG.getLoad(MVT::i64, DL, Chain, DescAddr,
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()), false,
|
||||
true, true, 8);
|
||||
Chain = FuncTLVGet.getValue(1);
|
||||
|
||||
MachineFrameInfo *MFI = DAG.getMachineFunction().getFrameInfo();
|
||||
|
|
|
@ -1848,7 +1848,7 @@ void AArch64InstrInfo::storeRegToStackSlot(
|
|||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
unsigned Align = MFI.getObjectAlignment(FI);
|
||||
|
||||
MachinePointerInfo PtrInfo(PseudoSourceValue::getFixedStack(FI));
|
||||
MachinePointerInfo PtrInfo = MachinePointerInfo::getFixedStack(MF, FI);
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
PtrInfo, MachineMemOperand::MOStore, MFI.getObjectSize(FI), Align);
|
||||
unsigned Opc = 0;
|
||||
|
@ -1945,7 +1945,7 @@ void AArch64InstrInfo::loadRegFromStackSlot(
|
|||
MachineFunction &MF = *MBB.getParent();
|
||||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
unsigned Align = MFI.getObjectAlignment(FI);
|
||||
MachinePointerInfo PtrInfo(PseudoSourceValue::getFixedStack(FI));
|
||||
MachinePointerInfo PtrInfo = MachinePointerInfo::getFixedStack(MF, FI);
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
PtrInfo, MachineMemOperand::MOLoad, MFI.getObjectSize(FI), Align);
|
||||
|
||||
|
|
|
@ -691,7 +691,7 @@ bool AMDGPUDAGToDAGISel::isCPLoad(const LoadSDNode *N) const {
|
|||
if (checkPrivateAddress(N->getMemOperand())) {
|
||||
if (MMO) {
|
||||
const PseudoSourceValue *PSV = MMO->getPseudoValue();
|
||||
if (PSV && PSV == PseudoSourceValue::getConstantPool()) {
|
||||
if (PSV && PSV->isConstantPool()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -853,11 +853,9 @@ storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
|||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
unsigned Align = MFI.getObjectAlignment(FI);
|
||||
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(FI),
|
||||
MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FI),
|
||||
Align);
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FI), MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FI), Align);
|
||||
|
||||
switch (RC->getSize()) {
|
||||
case 4:
|
||||
|
@ -1043,12 +1041,9 @@ loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
|||
MachineFunction &MF = *MBB.getParent();
|
||||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
unsigned Align = MFI.getObjectAlignment(FI);
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FI),
|
||||
Align);
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FI), MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FI), Align);
|
||||
|
||||
switch (RC->getSize()) {
|
||||
case 4:
|
||||
|
@ -4053,8 +4048,8 @@ void ARMBaseInstrInfo::expandLoadStackGuardBase(MachineBasicBlock::iterator MI,
|
|||
MIB = BuildMI(MBB, MI, DL, get(LoadOpc), Reg);
|
||||
MIB.addReg(Reg, RegState::Kill).addImm(0);
|
||||
unsigned Flag = MachineMemOperand::MOLoad | MachineMemOperand::MOInvariant;
|
||||
MachineMemOperand *MMO = MBB.getParent()->
|
||||
getMachineMemOperand(MachinePointerInfo::getGOT(), Flag, 4, 4);
|
||||
MachineMemOperand *MMO = MBB.getParent()->getMachineMemOperand(
|
||||
MachinePointerInfo::getGOT(*MBB.getParent()), Flag, 4, 4);
|
||||
MIB.addMemOperand(MMO);
|
||||
AddDefaultPred(MIB);
|
||||
}
|
||||
|
|
|
@ -922,12 +922,9 @@ void ARMFastISel::AddLoadStoreOperands(MVT VT, Address &Addr,
|
|||
if (Addr.BaseType == Address::FrameIndexBase) {
|
||||
int FI = Addr.Base.FI;
|
||||
int Offset = Addr.Offset;
|
||||
MachineMemOperand *MMO =
|
||||
FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(FI, Offset),
|
||||
Flags,
|
||||
MFI.getObjectSize(FI),
|
||||
MFI.getObjectAlignment(FI));
|
||||
MachineMemOperand *MMO = FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(*FuncInfo.MF, FI, Offset), Flags,
|
||||
MFI.getObjectSize(FI), MFI.getObjectAlignment(FI));
|
||||
// Now add the rest of the operands.
|
||||
MIB.addFrameIndex(FI);
|
||||
|
||||
|
|
|
@ -1473,9 +1473,10 @@ ARMTargetLowering::LowerMemOpCallTo(SDValue Chain,
|
|||
SDValue PtrOff = DAG.getIntPtrConstant(LocMemOffset, dl);
|
||||
PtrOff = DAG.getNode(ISD::ADD, dl, getPointerTy(DAG.getDataLayout()),
|
||||
StackPtr, PtrOff);
|
||||
return DAG.getStore(Chain, dl, Arg, PtrOff,
|
||||
MachinePointerInfo::getStack(LocMemOffset),
|
||||
false, false, 0);
|
||||
return DAG.getStore(
|
||||
Chain, dl, Arg, PtrOff,
|
||||
MachinePointerInfo::getStack(DAG.getMachineFunction(), LocMemOffset),
|
||||
false, false, 0);
|
||||
}
|
||||
|
||||
void ARMTargetLowering::PassF64ArgInRegs(SDLoc dl, SelectionDAG &DAG,
|
||||
|
@ -1758,9 +1759,10 @@ ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
|||
// Get the address of the callee into a register
|
||||
SDValue CPAddr = DAG.getTargetConstantPool(CPV, PtrVt, 4);
|
||||
CPAddr = DAG.getNode(ARMISD::Wrapper, dl, MVT::i32, CPAddr);
|
||||
Callee = DAG.getLoad(PtrVt, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(), false, false,
|
||||
false, 0);
|
||||
Callee = DAG.getLoad(
|
||||
PtrVt, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
} else if (ExternalSymbolSDNode *S=dyn_cast<ExternalSymbolSDNode>(Callee)) {
|
||||
const char *Sym = S->getSymbol();
|
||||
|
||||
|
@ -1772,9 +1774,10 @@ ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
|||
// Get the address of the callee into a register
|
||||
SDValue CPAddr = DAG.getTargetConstantPool(CPV, PtrVt, 4);
|
||||
CPAddr = DAG.getNode(ARMISD::Wrapper, dl, MVT::i32, CPAddr);
|
||||
Callee = DAG.getLoad(PtrVt, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(), false, false,
|
||||
false, 0);
|
||||
Callee = DAG.getLoad(
|
||||
PtrVt, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
}
|
||||
} else if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee)) {
|
||||
const GlobalValue *GV = G->getGlobal();
|
||||
|
@ -1792,7 +1795,8 @@ ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
|||
ARMISD::WrapperPIC, dl, PtrVt,
|
||||
DAG.getTargetGlobalAddress(GV, dl, PtrVt, 0, ARMII::MO_NONLAZY));
|
||||
Callee = DAG.getLoad(PtrVt, dl, DAG.getEntryNode(), Callee,
|
||||
MachinePointerInfo::getGOT(), false, false, true, 0);
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, true, 0);
|
||||
} else if (Subtarget->isTargetCOFF()) {
|
||||
assert(Subtarget->isTargetWindows() &&
|
||||
"Windows is the only supported COFF target");
|
||||
|
@ -1805,7 +1809,8 @@ ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
|||
Callee =
|
||||
DAG.getLoad(PtrVt, dl, DAG.getEntryNode(),
|
||||
DAG.getNode(ARMISD::Wrapper, dl, PtrVt, Callee),
|
||||
MachinePointerInfo::getGOT(), false, false, false, 0);
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
} else {
|
||||
// On ELF targets for PIC code, direct calls should go through the PLT
|
||||
unsigned OpFlags = 0;
|
||||
|
@ -1828,9 +1833,10 @@ ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
|||
ARMPCLabelIndex, 4);
|
||||
SDValue CPAddr = DAG.getTargetConstantPool(CPV, PtrVt, 4);
|
||||
CPAddr = DAG.getNode(ARMISD::Wrapper, dl, MVT::i32, CPAddr);
|
||||
Callee = DAG.getLoad(PtrVt, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(), false, false,
|
||||
false, 0);
|
||||
Callee = DAG.getLoad(
|
||||
PtrVt, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
SDValue PICLabel = DAG.getConstant(ARMPCLabelIndex, dl, MVT::i32);
|
||||
Callee = DAG.getNode(ARMISD::PIC_ADD, dl, PtrVt, Callee, PICLabel);
|
||||
} else {
|
||||
|
@ -2490,9 +2496,10 @@ SDValue ARMTargetLowering::LowerBlockAddress(SDValue Op,
|
|||
CPAddr = DAG.getTargetConstantPool(CPV, PtrVT, 4);
|
||||
}
|
||||
CPAddr = DAG.getNode(ARMISD::Wrapper, DL, PtrVT, CPAddr);
|
||||
SDValue Result = DAG.getLoad(PtrVT, DL, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
SDValue Result =
|
||||
DAG.getLoad(PtrVT, DL, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
if (RelocM == Reloc::Static)
|
||||
return Result;
|
||||
SDValue PICLabel = DAG.getConstant(ARMPCLabelIndex, DL, MVT::i32);
|
||||
|
@ -2514,9 +2521,10 @@ ARMTargetLowering::LowerToTLSGeneralDynamicModel(GlobalAddressSDNode *GA,
|
|||
ARMCP::CPValue, PCAdj, ARMCP::TLSGD, true);
|
||||
SDValue Argument = DAG.getTargetConstantPool(CPV, PtrVT, 4);
|
||||
Argument = DAG.getNode(ARMISD::Wrapper, dl, MVT::i32, Argument);
|
||||
Argument = DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), Argument,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
Argument =
|
||||
DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), Argument,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
SDValue Chain = Argument.getValue(1);
|
||||
|
||||
SDValue PICLabel = DAG.getConstant(ARMPCLabelIndex, dl, MVT::i32);
|
||||
|
@ -2566,17 +2574,19 @@ ARMTargetLowering::LowerToTLSExecModels(GlobalAddressSDNode *GA,
|
|||
true);
|
||||
Offset = DAG.getTargetConstantPool(CPV, PtrVT, 4);
|
||||
Offset = DAG.getNode(ARMISD::Wrapper, dl, MVT::i32, Offset);
|
||||
Offset = DAG.getLoad(PtrVT, dl, Chain, Offset,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
Offset = DAG.getLoad(
|
||||
PtrVT, dl, Chain, Offset,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
Chain = Offset.getValue(1);
|
||||
|
||||
SDValue PICLabel = DAG.getConstant(ARMPCLabelIndex, dl, MVT::i32);
|
||||
Offset = DAG.getNode(ARMISD::PIC_ADD, dl, PtrVT, Offset, PICLabel);
|
||||
|
||||
Offset = DAG.getLoad(PtrVT, dl, Chain, Offset,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
Offset = DAG.getLoad(
|
||||
PtrVT, dl, Chain, Offset,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
} else {
|
||||
// local exec model
|
||||
assert(model == TLSModel::LocalExec);
|
||||
|
@ -2584,9 +2594,10 @@ ARMTargetLowering::LowerToTLSExecModels(GlobalAddressSDNode *GA,
|
|||
ARMConstantPoolConstant::Create(GV, ARMCP::TPOFF);
|
||||
Offset = DAG.getTargetConstantPool(CPV, PtrVT, 4);
|
||||
Offset = DAG.getNode(ARMISD::Wrapper, dl, MVT::i32, Offset);
|
||||
Offset = DAG.getLoad(PtrVT, dl, Chain, Offset,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
Offset = DAG.getLoad(
|
||||
PtrVT, dl, Chain, Offset,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
}
|
||||
|
||||
// The address of the thread local variable is the add of the thread
|
||||
|
@ -2628,16 +2639,16 @@ SDValue ARMTargetLowering::LowerGlobalAddressELF(SDValue Op,
|
|||
UseGOTOFF ? ARMCP::GOTOFF : ARMCP::GOT);
|
||||
SDValue CPAddr = DAG.getTargetConstantPool(CPV, PtrVT, 4);
|
||||
CPAddr = DAG.getNode(ARMISD::Wrapper, dl, MVT::i32, CPAddr);
|
||||
SDValue Result = DAG.getLoad(PtrVT, dl, DAG.getEntryNode(),
|
||||
CPAddr,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
SDValue Result = DAG.getLoad(
|
||||
PtrVT, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
SDValue Chain = Result.getValue(1);
|
||||
SDValue GOT = DAG.getGLOBAL_OFFSET_TABLE(PtrVT);
|
||||
Result = DAG.getNode(ISD::ADD, dl, PtrVT, Result, GOT);
|
||||
if (!UseGOTOFF)
|
||||
Result = DAG.getLoad(PtrVT, dl, Chain, Result,
|
||||
MachinePointerInfo::getGOT(),
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
return Result;
|
||||
}
|
||||
|
@ -2653,9 +2664,10 @@ SDValue ARMTargetLowering::LowerGlobalAddressELF(SDValue Op,
|
|||
} else {
|
||||
SDValue CPAddr = DAG.getTargetConstantPool(GV, PtrVT, 4);
|
||||
CPAddr = DAG.getNode(ARMISD::Wrapper, dl, MVT::i32, CPAddr);
|
||||
return DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
return DAG.getLoad(
|
||||
PtrVT, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2679,7 +2691,8 @@ SDValue ARMTargetLowering::LowerGlobalAddressDarwin(SDValue Op,
|
|||
|
||||
if (Subtarget->GVIsIndirectSymbol(GV, RelocM))
|
||||
Result = DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), Result,
|
||||
MachinePointerInfo::getGOT(), false, false, false, 0);
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
return Result;
|
||||
}
|
||||
|
||||
|
@ -2705,7 +2718,8 @@ SDValue ARMTargetLowering::LowerGlobalAddressWindows(SDValue Op,
|
|||
TargetFlags));
|
||||
if (GV->hasDLLImportStorageClass())
|
||||
Result = DAG.getLoad(PtrVT, DL, DAG.getEntryNode(), Result,
|
||||
MachinePointerInfo::getGOT(), false, false, false, 0);
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
return Result;
|
||||
}
|
||||
|
||||
|
@ -2724,9 +2738,10 @@ SDValue ARMTargetLowering::LowerGLOBAL_OFFSET_TABLE(SDValue Op,
|
|||
ARMPCLabelIndex, PCAdj);
|
||||
SDValue CPAddr = DAG.getTargetConstantPool(CPV, PtrVT, 4);
|
||||
CPAddr = DAG.getNode(ARMISD::Wrapper, dl, MVT::i32, CPAddr);
|
||||
SDValue Result = DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
SDValue Result =
|
||||
DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
SDValue PICLabel = DAG.getConstant(ARMPCLabelIndex, dl, MVT::i32);
|
||||
return DAG.getNode(ARMISD::PIC_ADD, dl, PtrVT, Result, PICLabel);
|
||||
}
|
||||
|
@ -2784,10 +2799,10 @@ ARMTargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op, SelectionDAG &DAG,
|
|||
ARMCP::CPLSDA, PCAdj);
|
||||
CPAddr = DAG.getTargetConstantPool(CPV, PtrVT, 4);
|
||||
CPAddr = DAG.getNode(ARMISD::Wrapper, dl, MVT::i32, CPAddr);
|
||||
SDValue Result =
|
||||
DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
SDValue Result = DAG.getLoad(
|
||||
PtrVT, dl, DAG.getEntryNode(), CPAddr,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
|
||||
if (RelocM == Reloc::PIC_) {
|
||||
SDValue PICLabel = DAG.getConstant(ARMPCLabelIndex, dl, MVT::i32);
|
||||
|
@ -2919,9 +2934,10 @@ ARMTargetLowering::GetF64FormalArgument(CCValAssign &VA, CCValAssign &NextVA,
|
|||
|
||||
// Create load node to retrieve arguments from the stack.
|
||||
SDValue FIN = DAG.getFrameIndex(FI, getPointerTy(DAG.getDataLayout()));
|
||||
ArgValue2 = DAG.getLoad(MVT::i32, dl, Root, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
false, false, false, 0);
|
||||
ArgValue2 = DAG.getLoad(
|
||||
MVT::i32, dl, Root, FIN,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI), false,
|
||||
false, false, 0);
|
||||
} else {
|
||||
Reg = MF.addLiveIn(NextVA.getLocReg(), RC);
|
||||
ArgValue2 = DAG.getCopyFromReg(Root, dl, Reg, MVT::i32);
|
||||
|
@ -3105,9 +3121,10 @@ ARMTargetLowering::LowerFormalArguments(SDValue Chain,
|
|||
if (VA.isMemLoc()) {
|
||||
int FI = MFI->CreateFixedObject(8, VA.getLocMemOffset(), true);
|
||||
SDValue FIN = DAG.getFrameIndex(FI, PtrVT);
|
||||
ArgValue2 = DAG.getLoad(MVT::f64, dl, Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
false, false, false, 0);
|
||||
ArgValue2 = DAG.getLoad(
|
||||
MVT::f64, dl, Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI),
|
||||
false, false, false, 0);
|
||||
} else {
|
||||
ArgValue2 = GetF64FormalArgument(VA, ArgLocs[++i],
|
||||
Chain, DAG, dl);
|
||||
|
@ -3200,9 +3217,10 @@ ARMTargetLowering::LowerFormalArguments(SDValue Chain,
|
|||
|
||||
// Create load nodes to retrieve arguments from the stack.
|
||||
SDValue FIN = DAG.getFrameIndex(FI, PtrVT);
|
||||
InVals.push_back(DAG.getLoad(VA.getValVT(), dl, Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
false, false, false, 0));
|
||||
InVals.push_back(DAG.getLoad(
|
||||
VA.getValVT(), dl, Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI),
|
||||
false, false, false, 0));
|
||||
}
|
||||
lastInsIndex = index;
|
||||
}
|
||||
|
@ -3939,16 +3957,18 @@ SDValue ARMTargetLowering::LowerBR_JT(SDValue Op, SelectionDAG &DAG) const {
|
|||
Addr, Op.getOperand(2), JTI);
|
||||
}
|
||||
if (getTargetMachine().getRelocationModel() == Reloc::PIC_) {
|
||||
Addr = DAG.getLoad((EVT)MVT::i32, dl, Chain, Addr,
|
||||
MachinePointerInfo::getJumpTable(),
|
||||
false, false, false, 0);
|
||||
Addr =
|
||||
DAG.getLoad((EVT)MVT::i32, dl, Chain, Addr,
|
||||
MachinePointerInfo::getJumpTable(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
Chain = Addr.getValue(1);
|
||||
Addr = DAG.getNode(ISD::ADD, dl, PTy, Addr, Table);
|
||||
return DAG.getNode(ARMISD::BR_JT, dl, MVT::Other, Chain, Addr, JTI);
|
||||
} else {
|
||||
Addr = DAG.getLoad(PTy, dl, Chain, Addr,
|
||||
MachinePointerInfo::getJumpTable(),
|
||||
false, false, false, 0);
|
||||
Addr =
|
||||
DAG.getLoad(PTy, dl, Chain, Addr,
|
||||
MachinePointerInfo::getJumpTable(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
Chain = Addr.getValue(1);
|
||||
return DAG.getNode(ARMISD::BR_JT, dl, MVT::Other, Chain, Addr, JTI);
|
||||
}
|
||||
|
@ -6880,12 +6900,12 @@ SetupEntryBlockForSjLj(MachineInstr *MI, MachineBasicBlock *MBB,
|
|||
|
||||
// Grab constant pool and fixed stack memory operands.
|
||||
MachineMemOperand *CPMMO =
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getConstantPool(),
|
||||
MachineMemOperand::MOLoad, 4, 4);
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getConstantPool(*MF),
|
||||
MachineMemOperand::MOLoad, 4, 4);
|
||||
|
||||
MachineMemOperand *FIMMOSt =
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getFixedStack(FI),
|
||||
MachineMemOperand::MOStore, 4, 4);
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getFixedStack(*MF, FI),
|
||||
MachineMemOperand::MOStore, 4, 4);
|
||||
|
||||
// Load the address of the dispatch MBB into the jump buffer.
|
||||
if (isThumb2) {
|
||||
|
@ -7061,10 +7081,9 @@ void ARMTargetLowering::EmitSjLjDispatchBlock(MachineInstr *MI,
|
|||
// context.
|
||||
SetupEntryBlockForSjLj(MI, MBB, DispatchBB, FI);
|
||||
|
||||
MachineMemOperand *FIMMOLd =
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getFixedStack(FI),
|
||||
MachineMemOperand::MOLoad |
|
||||
MachineMemOperand::MOVolatile, 4, 4);
|
||||
MachineMemOperand *FIMMOLd = MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(*MF, FI),
|
||||
MachineMemOperand::MOLoad | MachineMemOperand::MOVolatile, 4, 4);
|
||||
|
||||
MachineInstrBuilder MIB;
|
||||
MIB = BuildMI(DispatchBB, dl, TII->get(ARM::Int_eh_sjlj_dispatchsetup));
|
||||
|
@ -7179,9 +7198,8 @@ void ARMTargetLowering::EmitSjLjDispatchBlock(MachineInstr *MI,
|
|||
.addReg(NewVReg2, RegState::Kill)
|
||||
.addReg(NewVReg3));
|
||||
|
||||
MachineMemOperand *JTMMOLd =
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getJumpTable(),
|
||||
MachineMemOperand::MOLoad, 4, 4);
|
||||
MachineMemOperand *JTMMOLd = MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getJumpTable(*MF), MachineMemOperand::MOLoad, 4, 4);
|
||||
|
||||
unsigned NewVReg5 = MRI->createVirtualRegister(TRC);
|
||||
AddDefaultPred(BuildMI(DispContBB, dl, TII->get(ARM::tLDRi), NewVReg5)
|
||||
|
@ -7263,9 +7281,8 @@ void ARMTargetLowering::EmitSjLjDispatchBlock(MachineInstr *MI,
|
|||
AddDefaultPred(BuildMI(DispContBB, dl, TII->get(ARM::LEApcrelJT), NewVReg4)
|
||||
.addJumpTableIndex(MJTI));
|
||||
|
||||
MachineMemOperand *JTMMOLd =
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getJumpTable(),
|
||||
MachineMemOperand::MOLoad, 4, 4);
|
||||
MachineMemOperand *JTMMOLd = MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getJumpTable(*MF), MachineMemOperand::MOLoad, 4, 4);
|
||||
unsigned NewVReg5 = MRI->createVirtualRegister(TRC);
|
||||
AddDefaultPred(
|
||||
BuildMI(DispContBB, dl, TII->get(ARM::LDRrs), NewVReg5)
|
||||
|
|
|
@ -124,7 +124,7 @@ void ARMInstrInfo::expandLoadStackGuard(MachineBasicBlock::iterator MI,
|
|||
.addGlobalAddress(GV, 0, ARMII::MO_NONLAZY);
|
||||
unsigned Flag = MachineMemOperand::MOLoad | MachineMemOperand::MOInvariant;
|
||||
MachineMemOperand *MMO = MBB.getParent()->getMachineMemOperand(
|
||||
MachinePointerInfo::getGOT(), Flag, 4, 4);
|
||||
MachinePointerInfo::getGOT(*MBB.getParent()), Flag, 4, 4);
|
||||
MIB.addMemOperand(MMO);
|
||||
MIB = BuildMI(MBB, MI, DL, get(ARM::LDRi12), Reg);
|
||||
MIB.addReg(Reg, RegState::Kill).addImm(0);
|
||||
|
|
|
@ -84,11 +84,9 @@ storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
|||
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(FI),
|
||||
MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FI),
|
||||
MFI.getObjectAlignment(FI));
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FI), MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FI), MFI.getObjectAlignment(FI));
|
||||
AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::tSTRspi))
|
||||
.addReg(SrcReg, getKillRegState(isKill))
|
||||
.addFrameIndex(FI).addImm(0).addMemOperand(MMO));
|
||||
|
@ -112,11 +110,9 @@ loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
|||
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(FI),
|
||||
MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FI),
|
||||
MFI.getObjectAlignment(FI));
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FI), MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FI), MFI.getObjectAlignment(FI));
|
||||
AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::tLDRspi), DestReg)
|
||||
.addFrameIndex(FI).addImm(0).addMemOperand(MMO));
|
||||
}
|
||||
|
|
|
@ -131,11 +131,9 @@ storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
|||
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(FI),
|
||||
MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FI),
|
||||
MFI.getObjectAlignment(FI));
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FI), MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FI), MFI.getObjectAlignment(FI));
|
||||
|
||||
if (RC == &ARM::GPRRegClass || RC == &ARM::tGPRRegClass ||
|
||||
RC == &ARM::tcGPRRegClass || RC == &ARM::rGPRRegClass ||
|
||||
|
@ -171,11 +169,9 @@ loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
|||
const TargetRegisterInfo *TRI) const {
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(FI),
|
||||
MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FI),
|
||||
MFI.getObjectAlignment(FI));
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FI), MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FI), MFI.getObjectAlignment(FI));
|
||||
DebugLoc DL;
|
||||
if (I != MBB.end()) DL = I->getDebugLoc();
|
||||
|
||||
|
|
|
@ -555,7 +555,8 @@ HexagonTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
|||
MemOpChains.push_back(CreateCopyOfByValArgument(Arg, MemAddr, Chain,
|
||||
Flags, DAG, dl));
|
||||
} else {
|
||||
MachinePointerInfo LocPI = MachinePointerInfo::getStack(LocMemOffset);
|
||||
MachinePointerInfo LocPI = MachinePointerInfo::getStack(
|
||||
DAG.getMachineFunction(), LocMemOffset);
|
||||
SDValue S = DAG.getStore(Chain, dl, Arg, MemAddr, LocPI, false,
|
||||
false, 0);
|
||||
MemOpChains.push_back(S);
|
||||
|
|
|
@ -615,12 +615,9 @@ storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
|||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
unsigned Align = MFI.getObjectAlignment(FI);
|
||||
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(
|
||||
MachinePointerInfo(PseudoSourceValue::getFixedStack(FI)),
|
||||
MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FI),
|
||||
Align);
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FI), MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FI), Align);
|
||||
|
||||
if (Hexagon::IntRegsRegClass.hasSubClassEq(RC)) {
|
||||
BuildMI(MBB, I, DL, get(Hexagon::S2_storeri_io))
|
||||
|
@ -661,12 +658,9 @@ loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
|||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
unsigned Align = MFI.getObjectAlignment(FI);
|
||||
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(
|
||||
MachinePointerInfo(PseudoSourceValue::getFixedStack(FI)),
|
||||
MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FI),
|
||||
Align);
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FI), MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FI), Align);
|
||||
if (RC == &Hexagon::IntRegsRegClass) {
|
||||
BuildMI(MBB, I, DL, get(Hexagon::L2_loadri_io), DestReg)
|
||||
.addFrameIndex(FI).addImm(0).addMemOperand(MMO);
|
||||
|
|
|
@ -508,9 +508,10 @@ MSP430TargetLowering::LowerCCCArguments(SDValue Chain,
|
|||
// Create the SelectionDAG nodes corresponding to a load
|
||||
//from this parameter
|
||||
SDValue FIN = DAG.getFrameIndex(FI, MVT::i16);
|
||||
InVal = DAG.getLoad(VA.getLocVT(), dl, Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
false, false, false, 0);
|
||||
InVal = DAG.getLoad(
|
||||
VA.getLocVT(), dl, Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI),
|
||||
false, false, false, 0);
|
||||
}
|
||||
|
||||
InVals.push_back(InVal);
|
||||
|
|
|
@ -44,11 +44,10 @@ void MSP430InstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
|
|||
MachineFunction &MF = *MBB.getParent();
|
||||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(FrameIdx),
|
||||
MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FrameIdx),
|
||||
MFI.getObjectAlignment(FrameIdx));
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FrameIdx),
|
||||
MachineMemOperand::MOStore, MFI.getObjectSize(FrameIdx),
|
||||
MFI.getObjectAlignment(FrameIdx));
|
||||
|
||||
if (RC == &MSP430::GR16RegClass)
|
||||
BuildMI(MBB, MI, DL, get(MSP430::MOV16mr))
|
||||
|
@ -72,11 +71,10 @@ void MSP430InstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
|
|||
MachineFunction &MF = *MBB.getParent();
|
||||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(FrameIdx),
|
||||
MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FrameIdx),
|
||||
MFI.getObjectAlignment(FrameIdx));
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FrameIdx),
|
||||
MachineMemOperand::MOLoad, MFI.getObjectSize(FrameIdx),
|
||||
MFI.getObjectAlignment(FrameIdx));
|
||||
|
||||
if (RC == &MSP430::GR16RegClass)
|
||||
BuildMI(MBB, MI, DL, get(MSP430::MOV16rm))
|
||||
|
|
|
@ -431,7 +431,7 @@ bool LoadFromStackOrConst::hasHazard_(const MachineInstr &MI) {
|
|||
(*MI.memoperands_begin())->getPseudoValue()) {
|
||||
if (isa<FixedStackPseudoSourceValue>(PSV))
|
||||
return false;
|
||||
return !PSV->isConstant(nullptr) && PSV != PseudoSourceValue::getStack();
|
||||
return !PSV->isConstant(nullptr) && !PSV->isStack();
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -747,7 +747,7 @@ bool MipsFastISel::emitLoad(MVT VT, unsigned &ResultReg, Address &Addr,
|
|||
unsigned Offset = Addr.getOffset();
|
||||
MachineFrameInfo &MFI = *MF->getFrameInfo();
|
||||
MachineMemOperand *MMO = MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(FI), MachineMemOperand::MOLoad,
|
||||
MachinePointerInfo::getFixedStack(*MF, FI), MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FI), Align);
|
||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(Opc), ResultReg)
|
||||
.addFrameIndex(FI)
|
||||
|
@ -798,7 +798,7 @@ bool MipsFastISel::emitStore(MVT VT, unsigned SrcReg, Address &Addr,
|
|||
unsigned Offset = Addr.getOffset();
|
||||
MachineFrameInfo &MFI = *MF->getFrameInfo();
|
||||
MachineMemOperand *MMO = MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(FI), MachineMemOperand::MOLoad,
|
||||
MachinePointerInfo::getFixedStack(*MF, FI), MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FI), Align);
|
||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(Opc))
|
||||
.addReg(SrcReg)
|
||||
|
@ -1196,7 +1196,7 @@ bool MipsFastISel::processCallArgs(CallLoweringInfo &CLI,
|
|||
|
||||
unsigned Alignment = DL.getABITypeAlignment(ArgVal->getType());
|
||||
MachineMemOperand *MMO = FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getStack(Addr.getOffset()),
|
||||
MachinePointerInfo::getStack(*FuncInfo.MF, Addr.getOffset()),
|
||||
MachineMemOperand::MOStore, ArgVT.getStoreSize(), Alignment);
|
||||
(void)(MMO);
|
||||
// if (!emitStore(ArgVT, ArgReg, Addr, MMO))
|
||||
|
|
|
@ -1586,9 +1586,10 @@ SDValue MipsTargetLowering::lowerBR_JT(SDValue Op, SelectionDAG &DAG) const {
|
|||
SDValue Addr = DAG.getNode(ISD::ADD, DL, PTy, Index, Table);
|
||||
|
||||
EVT MemVT = EVT::getIntegerVT(*DAG.getContext(), EntrySize * 8);
|
||||
Addr = DAG.getExtLoad(ISD::SEXTLOAD, DL, PTy, Chain, Addr,
|
||||
MachinePointerInfo::getJumpTable(), MemVT, false, false,
|
||||
false, 0);
|
||||
Addr =
|
||||
DAG.getExtLoad(ISD::SEXTLOAD, DL, PTy, Chain, Addr,
|
||||
MachinePointerInfo::getJumpTable(DAG.getMachineFunction()),
|
||||
MemVT, false, false, false, 0);
|
||||
Chain = Addr.getValue(1);
|
||||
|
||||
if ((getTargetMachine().getRelocationModel() == Reloc::PIC_) || ABI.IsN64()) {
|
||||
|
@ -1690,14 +1691,15 @@ SDValue MipsTargetLowering::lowerGlobalAddress(SDValue Op,
|
|||
return getAddrLocal(N, SDLoc(N), Ty, DAG, ABI.IsN32() || ABI.IsN64());
|
||||
|
||||
if (LargeGOT)
|
||||
return getAddrGlobalLargeGOT(N, SDLoc(N), Ty, DAG, MipsII::MO_GOT_HI16,
|
||||
MipsII::MO_GOT_LO16, DAG.getEntryNode(),
|
||||
MachinePointerInfo::getGOT());
|
||||
return getAddrGlobalLargeGOT(
|
||||
N, SDLoc(N), Ty, DAG, MipsII::MO_GOT_HI16, MipsII::MO_GOT_LO16,
|
||||
DAG.getEntryNode(),
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()));
|
||||
|
||||
return getAddrGlobal(N, SDLoc(N), Ty, DAG,
|
||||
(ABI.IsN32() || ABI.IsN64()) ? MipsII::MO_GOT_DISP
|
||||
: MipsII::MO_GOT16,
|
||||
DAG.getEntryNode(), MachinePointerInfo::getGOT());
|
||||
return getAddrGlobal(
|
||||
N, SDLoc(N), Ty, DAG,
|
||||
(ABI.IsN32() || ABI.IsN64()) ? MipsII::MO_GOT_DISP : MipsII::MO_GOT16,
|
||||
DAG.getEntryNode(), MachinePointerInfo::getGOT(DAG.getMachineFunction()));
|
||||
}
|
||||
|
||||
SDValue MipsTargetLowering::lowerBlockAddress(SDValue Op,
|
||||
|
@ -3037,9 +3039,10 @@ MipsTargetLowering::LowerFormalArguments(SDValue Chain,
|
|||
|
||||
// Create load nodes to retrieve arguments from the stack
|
||||
SDValue FIN = DAG.getFrameIndex(FI, getPointerTy(DAG.getDataLayout()));
|
||||
SDValue ArgValue = DAG.getLoad(LocVT, DL, Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
false, false, false, 0);
|
||||
SDValue ArgValue = DAG.getLoad(
|
||||
LocVT, DL, Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI),
|
||||
false, false, false, 0);
|
||||
OutChains.push_back(ArgValue.getValue(1));
|
||||
|
||||
ArgValue = UnpackFromArgumentSlot(ArgValue, VA, Ins[i].ArgVT, DL, DAG);
|
||||
|
|
|
@ -282,9 +282,10 @@ namespace llvm {
|
|||
unsigned GOTFlag = IsN32OrN64 ? MipsII::MO_GOT_PAGE : MipsII::MO_GOT;
|
||||
SDValue GOT = DAG.getNode(MipsISD::Wrapper, DL, Ty, getGlobalReg(DAG, Ty),
|
||||
getTargetNode(N, Ty, DAG, GOTFlag));
|
||||
SDValue Load = DAG.getLoad(Ty, DL, DAG.getEntryNode(), GOT,
|
||||
MachinePointerInfo::getGOT(), false, false,
|
||||
false, 0);
|
||||
SDValue Load =
|
||||
DAG.getLoad(Ty, DL, DAG.getEntryNode(), GOT,
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
unsigned LoFlag = IsN32OrN64 ? MipsII::MO_GOT_OFST : MipsII::MO_ABS_LO;
|
||||
SDValue Lo = DAG.getNode(MipsISD::Lo, DL, Ty,
|
||||
getTargetNode(N, Ty, DAG, LoFlag));
|
||||
|
|
|
@ -60,8 +60,8 @@ MachineMemOperand *MipsInstrInfo::GetMemOperand(MachineBasicBlock &MBB, int FI,
|
|||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
unsigned Align = MFI.getObjectAlignment(FI);
|
||||
|
||||
return MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(FI), Flag,
|
||||
MFI.getObjectSize(FI), Align);
|
||||
return MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(MF, FI),
|
||||
Flag, MFI.getObjectSize(FI), Align);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -528,9 +528,9 @@ bool PPCFastISel::PPCEmitLoad(MVT VT, unsigned &ResultReg, Address &Addr,
|
|||
// VSX only provides an indexed load.
|
||||
if (Is32VSXLoad || Is64VSXLoad) return false;
|
||||
|
||||
MachineMemOperand *MMO =
|
||||
FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(Addr.Base.FI, Addr.Offset),
|
||||
MachineMemOperand *MMO = FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(*FuncInfo.MF, Addr.Base.FI,
|
||||
Addr.Offset),
|
||||
MachineMemOperand::MOLoad, MFI.getObjectSize(Addr.Base.FI),
|
||||
MFI.getObjectAlignment(Addr.Base.FI));
|
||||
|
||||
|
@ -661,9 +661,9 @@ bool PPCFastISel::PPCEmitStore(MVT VT, unsigned SrcReg, Address &Addr) {
|
|||
// VSX only provides an indexed store.
|
||||
if (Is32VSXStore || Is64VSXStore) return false;
|
||||
|
||||
MachineMemOperand *MMO =
|
||||
FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(Addr.Base.FI, Addr.Offset),
|
||||
MachineMemOperand *MMO = FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(*FuncInfo.MF, Addr.Base.FI,
|
||||
Addr.Offset),
|
||||
MachineMemOperand::MOStore, MFI.getObjectSize(Addr.Base.FI),
|
||||
MFI.getObjectAlignment(Addr.Base.FI));
|
||||
|
||||
|
@ -1896,10 +1896,9 @@ unsigned PPCFastISel::PPCMaterializeFP(const ConstantFP *CFP, MVT VT) {
|
|||
unsigned DestReg = createResultReg(TLI.getRegClassFor(VT));
|
||||
CodeModel::Model CModel = TM.getCodeModel();
|
||||
|
||||
MachineMemOperand *MMO =
|
||||
FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getConstantPool(), MachineMemOperand::MOLoad,
|
||||
(VT == MVT::f32) ? 4 : 8, Align);
|
||||
MachineMemOperand *MMO = FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getConstantPool(*FuncInfo.MF),
|
||||
MachineMemOperand::MOLoad, (VT == MVT::f32) ? 4 : 8, Align);
|
||||
|
||||
unsigned Opc = (VT == MVT::f32) ? PPC::LFS : PPC::LFD;
|
||||
unsigned TmpReg = createResultReg(&PPC::G8RC_and_G8RC_NOX0RegClass);
|
||||
|
|
|
@ -1996,10 +1996,10 @@ static SDValue getTOCEntry(SelectionDAG &DAG, SDLoc dl, bool Is64Bit,
|
|||
DAG.getNode(PPCISD::GlobalBaseReg, dl, VT);
|
||||
|
||||
SDValue Ops[] = { GA, Reg };
|
||||
return DAG.getMemIntrinsicNode(PPCISD::TOC_ENTRY, dl,
|
||||
DAG.getVTList(VT, MVT::Other), Ops, VT,
|
||||
MachinePointerInfo::getGOT(), 0, false, true,
|
||||
false, 0);
|
||||
return DAG.getMemIntrinsicNode(
|
||||
PPCISD::TOC_ENTRY, dl, DAG.getVTList(VT, MVT::Other), Ops, VT,
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()), 0, false, true,
|
||||
false, 0);
|
||||
}
|
||||
|
||||
SDValue PPCTargetLowering::LowerConstantPool(SDValue Op,
|
||||
|
@ -3896,9 +3896,10 @@ StoreTailCallArgumentsToStackSlot(SelectionDAG &DAG,
|
|||
SDValue FIN = TailCallArgs[i].FrameIdxOp;
|
||||
int FI = TailCallArgs[i].FrameIdx;
|
||||
// Store relative to framepointer.
|
||||
MemOpChains.push_back(DAG.getStore(Chain, dl, Arg, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
false, false, 0));
|
||||
MemOpChains.push_back(DAG.getStore(
|
||||
Chain, dl, Arg, FIN,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI), false,
|
||||
false, 0));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3923,9 +3924,10 @@ static SDValue EmitTailCallStoreFPAndRetAddr(SelectionDAG &DAG,
|
|||
NewRetAddrLoc, true);
|
||||
EVT VT = isPPC64 ? MVT::i64 : MVT::i32;
|
||||
SDValue NewRetAddrFrIdx = DAG.getFrameIndex(NewRetAddr, VT);
|
||||
Chain = DAG.getStore(Chain, dl, OldRetAddr, NewRetAddrFrIdx,
|
||||
MachinePointerInfo::getFixedStack(NewRetAddr),
|
||||
false, false, 0);
|
||||
Chain = DAG.getStore(
|
||||
Chain, dl, OldRetAddr, NewRetAddrFrIdx,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), NewRetAddr),
|
||||
false, false, 0);
|
||||
|
||||
// When using the 32/64-bit SVR4 ABI there is no need to move the FP stack
|
||||
// slot as the FP is never overwritten.
|
||||
|
@ -3934,9 +3936,10 @@ static SDValue EmitTailCallStoreFPAndRetAddr(SelectionDAG &DAG,
|
|||
int NewFPIdx = MF.getFrameInfo()->CreateFixedObject(SlotSize, NewFPLoc,
|
||||
true);
|
||||
SDValue NewFramePtrIdx = DAG.getFrameIndex(NewFPIdx, VT);
|
||||
Chain = DAG.getStore(Chain, dl, OldFP, NewFramePtrIdx,
|
||||
MachinePointerInfo::getFixedStack(NewFPIdx),
|
||||
false, false, 0);
|
||||
Chain = DAG.getStore(
|
||||
Chain, dl, OldFP, NewFramePtrIdx,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), NewFPIdx),
|
||||
false, false, 0);
|
||||
}
|
||||
}
|
||||
return Chain;
|
||||
|
@ -5319,9 +5322,10 @@ PPCTargetLowering::LowerCall_64SVR4(SDValue Chain, SDValue Callee,
|
|||
unsigned TOCSaveOffset = Subtarget.getFrameLowering()->getTOCSaveOffset();
|
||||
SDValue PtrOff = DAG.getIntPtrConstant(TOCSaveOffset, dl);
|
||||
SDValue AddPtr = DAG.getNode(ISD::ADD, dl, PtrVT, StackPtr, PtrOff);
|
||||
Chain = DAG.getStore(Val.getValue(1), dl, Val, AddPtr,
|
||||
MachinePointerInfo::getStack(TOCSaveOffset),
|
||||
false, false, 0);
|
||||
Chain = DAG.getStore(
|
||||
Val.getValue(1), dl, Val, AddPtr,
|
||||
MachinePointerInfo::getStack(DAG.getMachineFunction(), TOCSaveOffset),
|
||||
false, false, 0);
|
||||
// In the ELFv2 ABI, R12 must contain the address of an indirect callee.
|
||||
// This does not mean the MTCTR instruction must use R12; it's easier
|
||||
// to model this as an extra parameter, so do that.
|
||||
|
@ -6102,7 +6106,8 @@ void PPCTargetLowering::LowerFP_TO_INTForReuse(SDValue Op, ReuseLoadInfo &RLI,
|
|||
(Op.getOpcode() == ISD::FP_TO_SINT || Subtarget.hasFPCVT());
|
||||
SDValue FIPtr = DAG.CreateStackTemporary(i32Stack ? MVT::i32 : MVT::f64);
|
||||
int FI = cast<FrameIndexSDNode>(FIPtr)->getIndex();
|
||||
MachinePointerInfo MPI = MachinePointerInfo::getFixedStack(FI);
|
||||
MachinePointerInfo MPI =
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI);
|
||||
|
||||
// Emit a store to the stack slot.
|
||||
SDValue Chain;
|
||||
|
@ -6422,17 +6427,18 @@ SDValue PPCTargetLowering::LowerINT_TO_FP(SDValue Op,
|
|||
int FrameIdx = FrameInfo->CreateStackObject(4, 4, false);
|
||||
SDValue FIdx = DAG.getFrameIndex(FrameIdx, PtrVT);
|
||||
|
||||
SDValue Store =
|
||||
DAG.getStore(DAG.getEntryNode(), dl, SINT.getOperand(0), FIdx,
|
||||
MachinePointerInfo::getFixedStack(FrameIdx),
|
||||
false, false, 0);
|
||||
SDValue Store = DAG.getStore(
|
||||
DAG.getEntryNode(), dl, SINT.getOperand(0), FIdx,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FrameIdx),
|
||||
false, false, 0);
|
||||
|
||||
assert(cast<StoreSDNode>(Store)->getMemoryVT() == MVT::i32 &&
|
||||
"Expected an i32 store");
|
||||
|
||||
RLI.Ptr = FIdx;
|
||||
RLI.Chain = Store;
|
||||
RLI.MPI = MachinePointerInfo::getFixedStack(FrameIdx);
|
||||
RLI.MPI =
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FrameIdx);
|
||||
RLI.Alignment = 4;
|
||||
|
||||
MachineMemOperand *MMO =
|
||||
|
@ -6473,16 +6479,18 @@ SDValue PPCTargetLowering::LowerINT_TO_FP(SDValue Op,
|
|||
int FrameIdx = FrameInfo->CreateStackObject(4, 4, false);
|
||||
SDValue FIdx = DAG.getFrameIndex(FrameIdx, PtrVT);
|
||||
|
||||
SDValue Store = DAG.getStore(DAG.getEntryNode(), dl, Op.getOperand(0), FIdx,
|
||||
MachinePointerInfo::getFixedStack(FrameIdx),
|
||||
false, false, 0);
|
||||
SDValue Store = DAG.getStore(
|
||||
DAG.getEntryNode(), dl, Op.getOperand(0), FIdx,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FrameIdx),
|
||||
false, false, 0);
|
||||
|
||||
assert(cast<StoreSDNode>(Store)->getMemoryVT() == MVT::i32 &&
|
||||
"Expected an i32 store");
|
||||
|
||||
RLI.Ptr = FIdx;
|
||||
RLI.Chain = Store;
|
||||
RLI.MPI = MachinePointerInfo::getFixedStack(FrameIdx);
|
||||
RLI.MPI =
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FrameIdx);
|
||||
RLI.Alignment = 4;
|
||||
}
|
||||
|
||||
|
@ -6507,14 +6515,16 @@ SDValue PPCTargetLowering::LowerINT_TO_FP(SDValue Op,
|
|||
Op.getOperand(0));
|
||||
|
||||
// STD the extended value into the stack slot.
|
||||
SDValue Store = DAG.getStore(DAG.getEntryNode(), dl, Ext64, FIdx,
|
||||
MachinePointerInfo::getFixedStack(FrameIdx),
|
||||
false, false, 0);
|
||||
SDValue Store = DAG.getStore(
|
||||
DAG.getEntryNode(), dl, Ext64, FIdx,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FrameIdx),
|
||||
false, false, 0);
|
||||
|
||||
// Load the value as a double.
|
||||
Ld = DAG.getLoad(MVT::f64, dl, Store, FIdx,
|
||||
MachinePointerInfo::getFixedStack(FrameIdx),
|
||||
false, false, false, 0);
|
||||
Ld = DAG.getLoad(
|
||||
MVT::f64, dl, Store, FIdx,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FrameIdx),
|
||||
false, false, false, 0);
|
||||
}
|
||||
|
||||
// FCFID it and return it.
|
||||
|
@ -6769,7 +6779,8 @@ SDValue PPCTargetLowering::LowerBUILD_VECTOR(SDValue Op,
|
|||
// to a zero vector to get the boolean result.
|
||||
MachineFrameInfo *FrameInfo = DAG.getMachineFunction().getFrameInfo();
|
||||
int FrameIdx = FrameInfo->CreateStackObject(16, 16, false);
|
||||
MachinePointerInfo PtrInfo = MachinePointerInfo::getFixedStack(FrameIdx);
|
||||
MachinePointerInfo PtrInfo =
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FrameIdx);
|
||||
EVT PtrVT = getPointerTy(DAG.getDataLayout());
|
||||
SDValue FIdx = DAG.getFrameIndex(FrameIdx, PtrVT);
|
||||
|
||||
|
@ -6815,9 +6826,9 @@ SDValue PPCTargetLowering::LowerBUILD_VECTOR(SDValue Op,
|
|||
ValueVTs.push_back(MVT::Other); // chain
|
||||
SDVTList VTs = DAG.getVTList(ValueVTs);
|
||||
|
||||
return DAG.getMemIntrinsicNode(PPCISD::QVLFSb,
|
||||
dl, VTs, Ops, MVT::v4f32,
|
||||
MachinePointerInfo::getConstantPool());
|
||||
return DAG.getMemIntrinsicNode(
|
||||
PPCISD::QVLFSb, dl, VTs, Ops, MVT::v4f32,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()));
|
||||
}
|
||||
|
||||
SmallVector<SDValue, 4> Stores;
|
||||
|
@ -7544,7 +7555,8 @@ SDValue PPCTargetLowering::LowerEXTRACT_VECTOR_ELT(SDValue Op,
|
|||
|
||||
MachineFrameInfo *FrameInfo = DAG.getMachineFunction().getFrameInfo();
|
||||
int FrameIdx = FrameInfo->CreateStackObject(16, 16, false);
|
||||
MachinePointerInfo PtrInfo = MachinePointerInfo::getFixedStack(FrameIdx);
|
||||
MachinePointerInfo PtrInfo =
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FrameIdx);
|
||||
EVT PtrVT = getPointerTy(DAG.getDataLayout());
|
||||
SDValue FIdx = DAG.getFrameIndex(FrameIdx, PtrVT);
|
||||
|
||||
|
@ -7760,7 +7772,8 @@ SDValue PPCTargetLowering::LowerVectorStore(SDValue Op,
|
|||
|
||||
MachineFrameInfo *FrameInfo = DAG.getMachineFunction().getFrameInfo();
|
||||
int FrameIdx = FrameInfo->CreateStackObject(16, 16, false);
|
||||
MachinePointerInfo PtrInfo = MachinePointerInfo::getFixedStack(FrameIdx);
|
||||
MachinePointerInfo PtrInfo =
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FrameIdx);
|
||||
EVT PtrVT = getPointerTy(DAG.getDataLayout());
|
||||
SDValue FIdx = DAG.getFrameIndex(FrameIdx, PtrVT);
|
||||
|
||||
|
|
|
@ -1253,11 +1253,10 @@ PPCInstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
|
|||
MBB.insert(MI, NewMIs[i]);
|
||||
|
||||
const MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(FrameIdx),
|
||||
MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FrameIdx),
|
||||
MFI.getObjectAlignment(FrameIdx));
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FrameIdx),
|
||||
MachineMemOperand::MOStore, MFI.getObjectSize(FrameIdx),
|
||||
MFI.getObjectAlignment(FrameIdx));
|
||||
NewMIs.back()->addMemOperand(MF, MMO);
|
||||
}
|
||||
|
||||
|
@ -1366,11 +1365,10 @@ PPCInstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
|
|||
MBB.insert(MI, NewMIs[i]);
|
||||
|
||||
const MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(FrameIdx),
|
||||
MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FrameIdx),
|
||||
MFI.getObjectAlignment(FrameIdx));
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FrameIdx),
|
||||
MachineMemOperand::MOLoad, MFI.getObjectSize(FrameIdx),
|
||||
MFI.getObjectAlignment(FrameIdx));
|
||||
NewMIs.back()->addMemOperand(MF, MMO);
|
||||
}
|
||||
|
||||
|
|
|
@ -658,7 +658,7 @@ LowerFormalArguments_64(SDValue Chain,
|
|||
InVals.push_back(DAG.getLoad(
|
||||
VA.getValVT(), DL, Chain,
|
||||
DAG.getFrameIndex(FI, getPointerTy(MF.getDataLayout())),
|
||||
MachinePointerInfo::getFixedStack(FI), false, false, false, 0));
|
||||
MachinePointerInfo::getFixedStack(MF, FI), false, false, false, 0));
|
||||
}
|
||||
|
||||
if (!IsVarArg)
|
||||
|
@ -686,9 +686,9 @@ LowerFormalArguments_64(SDValue Chain,
|
|||
SDValue VArg = DAG.getCopyFromReg(Chain, DL, VReg, MVT::i64);
|
||||
int FI = MF.getFrameInfo()->CreateFixedObject(8, ArgOffset + ArgArea, true);
|
||||
auto PtrVT = getPointerTy(MF.getDataLayout());
|
||||
OutChains.push_back(
|
||||
DAG.getStore(Chain, DL, VArg, DAG.getFrameIndex(FI, PtrVT),
|
||||
MachinePointerInfo::getFixedStack(FI), false, false, 0));
|
||||
OutChains.push_back(DAG.getStore(
|
||||
Chain, DL, VArg, DAG.getFrameIndex(FI, PtrVT),
|
||||
MachinePointerInfo::getFixedStack(MF, FI), false, false, 0));
|
||||
}
|
||||
|
||||
if (!OutChains.empty())
|
||||
|
@ -1909,7 +1909,8 @@ SDValue SparcTargetLowering::makeAddress(SDValue Op, SelectionDAG &DAG) const {
|
|||
MachineFrameInfo *MFI = DAG.getMachineFunction().getFrameInfo();
|
||||
MFI->setHasCalls(true);
|
||||
return DAG.getLoad(VT, DL, DAG.getEntryNode(), AbsAddr,
|
||||
MachinePointerInfo::getGOT(), false, false, false, 0);
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
}
|
||||
|
||||
// This is one of the absolute code models.
|
||||
|
|
|
@ -376,11 +376,9 @@ storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
|||
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
const MachineFrameInfo &MFI = *MF->getFrameInfo();
|
||||
MachineMemOperand *MMO =
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getFixedStack(FI),
|
||||
MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FI),
|
||||
MFI.getObjectAlignment(FI));
|
||||
MachineMemOperand *MMO = MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(*MF, FI), MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FI), MFI.getObjectAlignment(FI));
|
||||
|
||||
// On the order of operands here: think "[FrameIdx + 0] = SrcReg".
|
||||
if (RC == &SP::I64RegsRegClass)
|
||||
|
@ -417,11 +415,9 @@ loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
|||
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
const MachineFrameInfo &MFI = *MF->getFrameInfo();
|
||||
MachineMemOperand *MMO =
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getFixedStack(FI),
|
||||
MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FI),
|
||||
MFI.getObjectAlignment(FI));
|
||||
MachineMemOperand *MMO = MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(*MF, FI), MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FI), MFI.getObjectAlignment(FI));
|
||||
|
||||
if (RC == &SP::I64RegsRegClass)
|
||||
BuildMI(MBB, I, DL, get(SP::LDXri), DestReg).addFrameIndex(FI).addImm(0)
|
||||
|
|
|
@ -938,8 +938,8 @@ LowerFormalArguments(SDValue Chain, CallingConv::ID CallConv, bool IsVarArg,
|
|||
FIN = DAG.getNode(ISD::ADD, DL, PtrVT, FIN,
|
||||
DAG.getIntPtrConstant(4, DL));
|
||||
ArgValue = DAG.getLoad(LocVT, DL, Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
false, false, false, 0);
|
||||
MachinePointerInfo::getFixedStack(MF, FI), false,
|
||||
false, false, 0);
|
||||
}
|
||||
|
||||
// Convert the value of the argument register into the value that's
|
||||
|
@ -975,9 +975,8 @@ LowerFormalArguments(SDValue Chain, CallingConv::ID CallConv, bool IsVarArg,
|
|||
&SystemZ::FP64BitRegClass);
|
||||
SDValue ArgValue = DAG.getCopyFromReg(Chain, DL, VReg, MVT::f64);
|
||||
MemOps[I] = DAG.getStore(ArgValue.getValue(1), DL, ArgValue, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
MachinePointerInfo::getFixedStack(MF, FI),
|
||||
false, false, 0);
|
||||
|
||||
}
|
||||
// Join the stores, which are independent of one another.
|
||||
Chain = DAG.getNode(ISD::TokenFactor, DL, MVT::Other,
|
||||
|
@ -1059,9 +1058,9 @@ SystemZTargetLowering::LowerCall(CallLoweringInfo &CLI,
|
|||
// Store the argument in a stack slot and pass its address.
|
||||
SDValue SpillSlot = DAG.CreateStackTemporary(VA.getValVT());
|
||||
int FI = cast<FrameIndexSDNode>(SpillSlot)->getIndex();
|
||||
MemOpChains.push_back(DAG.getStore(Chain, DL, ArgValue, SpillSlot,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
false, false, 0));
|
||||
MemOpChains.push_back(DAG.getStore(
|
||||
Chain, DL, ArgValue, SpillSlot,
|
||||
MachinePointerInfo::getFixedStack(MF, FI), false, false, 0));
|
||||
ArgValue = SpillSlot;
|
||||
} else
|
||||
ArgValue = convertValVTToLocVT(DAG, DL, VA, ArgValue);
|
||||
|
@ -2424,7 +2423,8 @@ SDValue SystemZTargetLowering::lowerGlobalAddress(GlobalAddressSDNode *Node,
|
|||
Result = DAG.getTargetGlobalAddress(GV, DL, PtrVT, 0, SystemZII::MO_GOT);
|
||||
Result = DAG.getNode(SystemZISD::PCREL_WRAPPER, DL, PtrVT, Result);
|
||||
Result = DAG.getLoad(PtrVT, DL, DAG.getEntryNode(), Result,
|
||||
MachinePointerInfo::getGOT(), false, false, false, 0);
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
}
|
||||
|
||||
// If there was a non-zero offset that we didn't fold, create an explicit
|
||||
|
@ -2516,9 +2516,10 @@ SDValue SystemZTargetLowering::lowerGlobalTLSAddress(GlobalAddressSDNode *Node,
|
|||
SystemZConstantPoolValue::Create(GV, SystemZCP::TLSGD);
|
||||
|
||||
Offset = DAG.getConstantPool(CPV, PtrVT, 8);
|
||||
Offset = DAG.getLoad(PtrVT, DL, DAG.getEntryNode(),
|
||||
Offset, MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
Offset = DAG.getLoad(
|
||||
PtrVT, DL, DAG.getEntryNode(), Offset,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
|
||||
// Call __tls_get_offset to retrieve the offset.
|
||||
Offset = lowerTLSGetOffset(Node, DAG, SystemZISD::TLS_GDCALL, Offset);
|
||||
|
@ -2531,9 +2532,10 @@ SDValue SystemZTargetLowering::lowerGlobalTLSAddress(GlobalAddressSDNode *Node,
|
|||
SystemZConstantPoolValue::Create(GV, SystemZCP::TLSLDM);
|
||||
|
||||
Offset = DAG.getConstantPool(CPV, PtrVT, 8);
|
||||
Offset = DAG.getLoad(PtrVT, DL, DAG.getEntryNode(),
|
||||
Offset, MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
Offset = DAG.getLoad(
|
||||
PtrVT, DL, DAG.getEntryNode(), Offset,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
|
||||
// Call __tls_get_offset to retrieve the module base offset.
|
||||
Offset = lowerTLSGetOffset(Node, DAG, SystemZISD::TLS_LDCALL, Offset);
|
||||
|
@ -2549,9 +2551,10 @@ SDValue SystemZTargetLowering::lowerGlobalTLSAddress(GlobalAddressSDNode *Node,
|
|||
CPV = SystemZConstantPoolValue::Create(GV, SystemZCP::DTPOFF);
|
||||
|
||||
SDValue DTPOffset = DAG.getConstantPool(CPV, PtrVT, 8);
|
||||
DTPOffset = DAG.getLoad(PtrVT, DL, DAG.getEntryNode(),
|
||||
DTPOffset, MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
DTPOffset = DAG.getLoad(
|
||||
PtrVT, DL, DAG.getEntryNode(), DTPOffset,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
|
||||
Offset = DAG.getNode(ISD::ADD, DL, PtrVT, Offset, DTPOffset);
|
||||
break;
|
||||
|
@ -2562,8 +2565,8 @@ SDValue SystemZTargetLowering::lowerGlobalTLSAddress(GlobalAddressSDNode *Node,
|
|||
Offset = DAG.getTargetGlobalAddress(GV, DL, PtrVT, 0,
|
||||
SystemZII::MO_INDNTPOFF);
|
||||
Offset = DAG.getNode(SystemZISD::PCREL_WRAPPER, DL, PtrVT, Offset);
|
||||
Offset = DAG.getLoad(PtrVT, DL, DAG.getEntryNode(),
|
||||
Offset, MachinePointerInfo::getGOT(),
|
||||
Offset = DAG.getLoad(PtrVT, DL, DAG.getEntryNode(), Offset,
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
break;
|
||||
}
|
||||
|
@ -2574,9 +2577,10 @@ SDValue SystemZTargetLowering::lowerGlobalTLSAddress(GlobalAddressSDNode *Node,
|
|||
SystemZConstantPoolValue::Create(GV, SystemZCP::NTPOFF);
|
||||
|
||||
Offset = DAG.getConstantPool(CPV, PtrVT, 8);
|
||||
Offset = DAG.getLoad(PtrVT, DL, DAG.getEntryNode(),
|
||||
Offset, MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 0);
|
||||
Offset = DAG.getLoad(
|
||||
PtrVT, DL, DAG.getEntryNode(), Offset,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,11 +35,9 @@ addFrameReference(const MachineInstrBuilder &MIB, int FI) {
|
|||
if (MCID.mayStore())
|
||||
Flags |= MachineMemOperand::MOStore;
|
||||
int64_t Offset = 0;
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo(
|
||||
PseudoSourceValue::getFixedStack(FI), Offset),
|
||||
Flags, MFFrame->getObjectSize(FI),
|
||||
MFFrame->getObjectAlignment(FI));
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FI, Offset), Flags,
|
||||
MFFrame->getObjectSize(FI), MFFrame->getObjectAlignment(FI));
|
||||
return MIB.addFrameIndex(FI).addImm(Offset).addReg(0).addMemOperand(MMO);
|
||||
}
|
||||
|
||||
|
|
|
@ -3020,8 +3020,8 @@ bool X86FastISel::fastLowerCall(CallLoweringInfo &CLI) {
|
|||
ISD::ArgFlagsTy Flags = OutFlags[VA.getValNo()];
|
||||
unsigned Alignment = DL.getABITypeAlignment(ArgVal->getType());
|
||||
MachineMemOperand *MMO = FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getStack(LocMemOffset), MachineMemOperand::MOStore,
|
||||
ArgVT.getStoreSize(), Alignment);
|
||||
MachinePointerInfo::getStack(*FuncInfo.MF, LocMemOffset),
|
||||
MachineMemOperand::MOStore, ArgVT.getStoreSize(), Alignment);
|
||||
if (Flags.isByVal()) {
|
||||
X86AddressMode SrcAM;
|
||||
SrcAM.Base.Reg = ArgReg;
|
||||
|
@ -3384,8 +3384,8 @@ unsigned X86FastISel::X86MaterializeFP(const ConstantFP *CFP, MVT VT) {
|
|||
TII.get(Opc), ResultReg);
|
||||
addDirectMem(MIB, AddrReg);
|
||||
MachineMemOperand *MMO = FuncInfo.MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getConstantPool(), MachineMemOperand::MOLoad,
|
||||
DL.getPointerSize(), Align);
|
||||
MachinePointerInfo::getConstantPool(*FuncInfo.MF),
|
||||
MachineMemOperand::MOLoad, DL.getPointerSize(), Align);
|
||||
MIB->addMemOperand(*FuncInfo.MF, MMO);
|
||||
return ResultReg;
|
||||
}
|
||||
|
|
|
@ -2400,9 +2400,10 @@ X86TargetLowering::LowerMemArgument(SDValue Chain,
|
|||
int FI = MFI->CreateFixedObject(ValVT.getSizeInBits()/8,
|
||||
VA.getLocMemOffset(), isImmutable);
|
||||
SDValue FIN = DAG.getFrameIndex(FI, getPointerTy(DAG.getDataLayout()));
|
||||
SDValue Val = DAG.getLoad(ValVT, dl, Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
false, false, false, 0);
|
||||
SDValue Val = DAG.getLoad(
|
||||
ValVT, dl, Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI), false,
|
||||
false, false, 0);
|
||||
return ExtendedInMem ?
|
||||
DAG.getNode(ISD::TRUNCATE, dl, VA.getValVT(), Val) : Val;
|
||||
}
|
||||
|
@ -2674,10 +2675,11 @@ X86TargetLowering::LowerFormalArguments(SDValue Chain,
|
|||
SDValue FIN = DAG.getNode(ISD::ADD, dl, getPointerTy(DAG.getDataLayout()),
|
||||
RSFIN, DAG.getIntPtrConstant(Offset, dl));
|
||||
SDValue Store =
|
||||
DAG.getStore(Val.getValue(1), dl, Val, FIN,
|
||||
MachinePointerInfo::getFixedStack(
|
||||
FuncInfo->getRegSaveFrameIndex(), Offset),
|
||||
false, false, 0);
|
||||
DAG.getStore(Val.getValue(1), dl, Val, FIN,
|
||||
MachinePointerInfo::getFixedStack(
|
||||
DAG.getMachineFunction(),
|
||||
FuncInfo->getRegSaveFrameIndex(), Offset),
|
||||
false, false, 0);
|
||||
MemOps.push_back(Store);
|
||||
Offset += 8;
|
||||
}
|
||||
|
@ -2718,7 +2720,8 @@ X86TargetLowering::LowerFormalArguments(SDValue Chain,
|
|||
SDValue Val = DAG.getCopyFromReg(Chain, dl, GPR, MVT::i64);
|
||||
Chain = DAG.getStore(
|
||||
Val.getValue(1), dl, Val, RSFIN,
|
||||
MachinePointerInfo::getFixedStack(FuncInfo->getRegSaveFrameIndex()),
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(),
|
||||
FuncInfo->getRegSaveFrameIndex()),
|
||||
/*isVolatile=*/true, /*isNonTemporal=*/false, /*Alignment=*/0);
|
||||
}
|
||||
|
||||
|
@ -2793,7 +2796,8 @@ X86TargetLowering::LowerFormalArguments(SDValue Chain,
|
|||
MMI.getWinEHFuncInfo(MF.getFunction()).UnwindHelpFrameIdx = UnwindHelpFI;
|
||||
SDValue Neg2 = DAG.getConstant(-2, dl, MVT::i64);
|
||||
Chain = DAG.getStore(Chain, dl, Neg2, StackSlot,
|
||||
MachinePointerInfo::getFixedStack(UnwindHelpFI),
|
||||
MachinePointerInfo::getFixedStack(
|
||||
DAG.getMachineFunction(), UnwindHelpFI),
|
||||
/*isVolatile=*/true,
|
||||
/*isNonTemporal=*/false, /*Alignment=*/0);
|
||||
} else {
|
||||
|
@ -2820,9 +2824,10 @@ X86TargetLowering::LowerMemOpCallTo(SDValue Chain,
|
|||
if (Flags.isByVal())
|
||||
return CreateCopyOfByValArgument(Arg, PtrOff, Chain, Flags, DAG, dl);
|
||||
|
||||
return DAG.getStore(Chain, dl, Arg, PtrOff,
|
||||
MachinePointerInfo::getStack(LocMemOffset),
|
||||
false, false, 0);
|
||||
return DAG.getStore(
|
||||
Chain, dl, Arg, PtrOff,
|
||||
MachinePointerInfo::getStack(DAG.getMachineFunction(), LocMemOffset),
|
||||
false, false, 0);
|
||||
}
|
||||
|
||||
/// Emit a load of return address if tail call
|
||||
|
@ -2856,7 +2861,8 @@ static SDValue EmitTailCallStoreRetAddr(SelectionDAG &DAG, MachineFunction &MF,
|
|||
false);
|
||||
SDValue NewRetAddrFrIdx = DAG.getFrameIndex(NewReturnAddrFI, PtrVT);
|
||||
Chain = DAG.getStore(Chain, dl, RetAddrFrIdx, NewRetAddrFrIdx,
|
||||
MachinePointerInfo::getFixedStack(NewReturnAddrFI),
|
||||
MachinePointerInfo::getFixedStack(
|
||||
DAG.getMachineFunction(), NewReturnAddrFI),
|
||||
false, false, 0);
|
||||
return Chain;
|
||||
}
|
||||
|
@ -3042,9 +3048,10 @@ X86TargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
|||
// Store the argument.
|
||||
SDValue SpillSlot = DAG.CreateStackTemporary(VA.getValVT());
|
||||
int FI = cast<FrameIndexSDNode>(SpillSlot)->getIndex();
|
||||
Chain = DAG.getStore(Chain, dl, Arg, SpillSlot,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
false, false, 0);
|
||||
Chain = DAG.getStore(
|
||||
Chain, dl, Arg, SpillSlot,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI),
|
||||
false, false, 0);
|
||||
Arg = SpillSlot;
|
||||
break;
|
||||
}
|
||||
|
@ -3180,10 +3187,10 @@ X86TargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
|||
Flags, DAG, dl));
|
||||
} else {
|
||||
// Store relative to framepointer.
|
||||
MemOpChains2.push_back(
|
||||
DAG.getStore(ArgChain, dl, Arg, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
false, false, 0));
|
||||
MemOpChains2.push_back(DAG.getStore(
|
||||
ArgChain, dl, Arg, FIN,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI),
|
||||
false, false, 0));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3262,7 +3269,8 @@ X86TargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
|||
if (ExtraLoad)
|
||||
Callee = DAG.getLoad(
|
||||
getPointerTy(DAG.getDataLayout()), dl, DAG.getEntryNode(), Callee,
|
||||
MachinePointerInfo::getGOT(), false, false, false, 0);
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()), false, false,
|
||||
false, 0);
|
||||
}
|
||||
} else if (ExternalSymbolSDNode *S = dyn_cast<ExternalSymbolSDNode>(Callee)) {
|
||||
unsigned char OpFlags = 0;
|
||||
|
@ -5218,9 +5226,10 @@ static SDValue LowerVectorBroadcast(SDValue Op, const X86Subtarget* Subtarget,
|
|||
SDValue CP =
|
||||
DAG.getConstantPool(C, TLI.getPointerTy(DAG.getDataLayout()));
|
||||
unsigned Alignment = cast<ConstantPoolSDNode>(CP)->getAlignment();
|
||||
Ld = DAG.getLoad(CVT, dl, DAG.getEntryNode(), CP,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, Alignment);
|
||||
Ld = DAG.getLoad(
|
||||
CVT, dl, DAG.getEntryNode(), CP,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), false,
|
||||
false, false, Alignment);
|
||||
|
||||
return DAG.getNode(X86ISD::VBROADCAST, dl, VT, Ld);
|
||||
}
|
||||
|
@ -11401,7 +11410,8 @@ X86TargetLowering::LowerExternalSymbol(SDValue Op, SelectionDAG &DAG) const {
|
|||
// load.
|
||||
if (isGlobalStubReference(OpFlag))
|
||||
Result = DAG.getLoad(PtrVT, DL, DAG.getEntryNode(), Result,
|
||||
MachinePointerInfo::getGOT(), false, false, false, 0);
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
@ -11468,7 +11478,8 @@ X86TargetLowering::LowerGlobalAddress(const GlobalValue *GV, SDLoc dl,
|
|||
// load.
|
||||
if (isGlobalStubReference(OpFlags))
|
||||
Result = DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), Result,
|
||||
MachinePointerInfo::getGOT(), false, false, false, 0);
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
|
||||
// If there was a non-zero offset that we didn't fold, create an explicit
|
||||
// addition for it.
|
||||
|
@ -11625,7 +11636,8 @@ static SDValue LowerToTLSExecModel(GlobalAddressSDNode *GA, SelectionDAG &DAG,
|
|||
}
|
||||
|
||||
Offset = DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), Offset,
|
||||
MachinePointerInfo::getGOT(), false, false, false, 0);
|
||||
MachinePointerInfo::getGOT(DAG.getMachineFunction()),
|
||||
false, false, false, 0);
|
||||
}
|
||||
|
||||
// The address of the thread local variable is the add of the thread
|
||||
|
@ -11870,10 +11882,10 @@ SDValue X86TargetLowering::LowerSINT_TO_FP(SDValue Op,
|
|||
auto PtrVT = getPointerTy(MF.getDataLayout());
|
||||
int SSFI = MF.getFrameInfo()->CreateStackObject(Size, Size, false);
|
||||
SDValue StackSlot = DAG.getFrameIndex(SSFI, PtrVT);
|
||||
SDValue Chain = DAG.getStore(DAG.getEntryNode(), dl, Op.getOperand(0),
|
||||
StackSlot,
|
||||
MachinePointerInfo::getFixedStack(SSFI),
|
||||
false, false, 0);
|
||||
SDValue Chain = DAG.getStore(
|
||||
DAG.getEntryNode(), dl, Op.getOperand(0), StackSlot,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SSFI), false,
|
||||
false, 0);
|
||||
return BuildFILD(Op, SrcVT, Chain, StackSlot, DAG);
|
||||
}
|
||||
|
||||
|
@ -11895,10 +11907,9 @@ SDValue X86TargetLowering::BuildFILD(SDValue Op, EVT SrcVT, SDValue Chain,
|
|||
MachineMemOperand *MMO;
|
||||
if (FI) {
|
||||
int SSFI = FI->getIndex();
|
||||
MMO =
|
||||
DAG.getMachineFunction()
|
||||
.getMachineMemOperand(MachinePointerInfo::getFixedStack(SSFI),
|
||||
MachineMemOperand::MOLoad, ByteSize, ByteSize);
|
||||
MMO = DAG.getMachineFunction().getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SSFI),
|
||||
MachineMemOperand::MOLoad, ByteSize, ByteSize);
|
||||
} else {
|
||||
MMO = cast<LoadSDNode>(StackSlot)->getMemOperand();
|
||||
StackSlot = StackSlot.getOperand(1);
|
||||
|
@ -11924,16 +11935,16 @@ SDValue X86TargetLowering::BuildFILD(SDValue Op, EVT SrcVT, SDValue Chain,
|
|||
SDValue Ops[] = {
|
||||
Chain, Result, StackSlot, DAG.getValueType(Op.getValueType()), InFlag
|
||||
};
|
||||
MachineMemOperand *MMO =
|
||||
DAG.getMachineFunction()
|
||||
.getMachineMemOperand(MachinePointerInfo::getFixedStack(SSFI),
|
||||
MachineMemOperand::MOStore, SSFISize, SSFISize);
|
||||
MachineMemOperand *MMO = DAG.getMachineFunction().getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SSFI),
|
||||
MachineMemOperand::MOStore, SSFISize, SSFISize);
|
||||
|
||||
Chain = DAG.getMemIntrinsicNode(X86ISD::FST, DL, Tys,
|
||||
Ops, Op.getValueType(), MMO);
|
||||
Result = DAG.getLoad(Op.getValueType(), DL, Chain, StackSlot,
|
||||
MachinePointerInfo::getFixedStack(SSFI),
|
||||
false, false, false, 0);
|
||||
Result = DAG.getLoad(
|
||||
Op.getValueType(), DL, Chain, StackSlot,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SSFI),
|
||||
false, false, false, 0);
|
||||
}
|
||||
|
||||
return Result;
|
||||
|
@ -11977,15 +11988,17 @@ SDValue X86TargetLowering::LowerUINT_TO_FP_i64(SDValue Op,
|
|||
// Load the 64-bit value into an XMM register.
|
||||
SDValue XR1 = DAG.getNode(ISD::SCALAR_TO_VECTOR, dl, MVT::v2i64,
|
||||
Op.getOperand(0));
|
||||
SDValue CLod0 = DAG.getLoad(MVT::v4i32, dl, DAG.getEntryNode(), CPIdx0,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 16);
|
||||
SDValue CLod0 =
|
||||
DAG.getLoad(MVT::v4i32, dl, DAG.getEntryNode(), CPIdx0,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
|
||||
false, false, false, 16);
|
||||
SDValue Unpck1 =
|
||||
getUnpackl(DAG, dl, MVT::v4i32, DAG.getBitcast(MVT::v4i32, XR1), CLod0);
|
||||
|
||||
SDValue CLod1 = DAG.getLoad(MVT::v2f64, dl, CLod0.getValue(1), CPIdx1,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 16);
|
||||
SDValue CLod1 =
|
||||
DAG.getLoad(MVT::v2f64, dl, CLod0.getValue(1), CPIdx1,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
|
||||
false, false, false, 16);
|
||||
SDValue XR2F = DAG.getBitcast(MVT::v2f64, Unpck1);
|
||||
SDValue Sub = DAG.getNode(ISD::FSUB, dl, MVT::v2f64, XR2F, CLod1);
|
||||
SDValue Result;
|
||||
|
@ -12233,10 +12246,9 @@ SDValue X86TargetLowering::LowerUINT_TO_FP(SDValue Op,
|
|||
// we must be careful to do the computation in x87 extended precision, not
|
||||
// in SSE. (The generic code can't know it's OK to do this, or how to.)
|
||||
int SSFI = cast<FrameIndexSDNode>(StackSlot)->getIndex();
|
||||
MachineMemOperand *MMO =
|
||||
DAG.getMachineFunction()
|
||||
.getMachineMemOperand(MachinePointerInfo::getFixedStack(SSFI),
|
||||
MachineMemOperand::MOLoad, 8, 8);
|
||||
MachineMemOperand *MMO = DAG.getMachineFunction().getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SSFI),
|
||||
MachineMemOperand::MOLoad, 8, 8);
|
||||
|
||||
SDVTList Tys = DAG.getVTList(MVT::f80, MVT::Other);
|
||||
SDValue Ops[] = { Store, StackSlot, DAG.getValueType(MVT::i64) };
|
||||
|
@ -12263,9 +12275,10 @@ SDValue X86TargetLowering::LowerUINT_TO_FP(SDValue Op,
|
|||
|
||||
// Load the value out, extending it from f32 to f80.
|
||||
// FIXME: Avoid the extend by constructing the right constant pool?
|
||||
SDValue Fudge = DAG.getExtLoad(ISD::EXTLOAD, dl, MVT::f80, DAG.getEntryNode(),
|
||||
FudgePtr, MachinePointerInfo::getConstantPool(),
|
||||
MVT::f32, false, false, false, 4);
|
||||
SDValue Fudge = DAG.getExtLoad(
|
||||
ISD::EXTLOAD, dl, MVT::f80, DAG.getEntryNode(), FudgePtr,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), MVT::f32,
|
||||
false, false, false, 4);
|
||||
// Extend everything to 80 bits to force it to be done on x87.
|
||||
SDValue Add = DAG.getNode(ISD::FADD, dl, MVT::f80, Fild, Fudge);
|
||||
return DAG.getNode(ISD::FP_ROUND, dl, DstVT, Add,
|
||||
|
@ -12324,16 +12337,16 @@ X86TargetLowering:: FP_TO_INTHelper(SDValue Op, SelectionDAG &DAG,
|
|||
if (isScalarFPTypeInSSEReg(TheVT)) {
|
||||
assert(DstTy == MVT::i64 && "Invalid FP_TO_SINT to lower!");
|
||||
Chain = DAG.getStore(Chain, DL, Value, StackSlot,
|
||||
MachinePointerInfo::getFixedStack(SSFI),
|
||||
false, false, 0);
|
||||
MachinePointerInfo::getFixedStack(MF, SSFI), false,
|
||||
false, 0);
|
||||
SDVTList Tys = DAG.getVTList(Op.getOperand(0).getValueType(), MVT::Other);
|
||||
SDValue Ops[] = {
|
||||
Chain, StackSlot, DAG.getValueType(TheVT)
|
||||
};
|
||||
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(SSFI),
|
||||
MachineMemOperand::MOLoad, MemSize, MemSize);
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(MF, SSFI),
|
||||
MachineMemOperand::MOLoad, MemSize, MemSize);
|
||||
Value = DAG.getMemIntrinsicNode(X86ISD::FLD, DL, Tys, Ops, DstTy, MMO);
|
||||
Chain = Value.getValue(1);
|
||||
SSFI = MF.getFrameInfo()->CreateStackObject(MemSize, MemSize, false);
|
||||
|
@ -12341,8 +12354,8 @@ X86TargetLowering:: FP_TO_INTHelper(SDValue Op, SelectionDAG &DAG,
|
|||
}
|
||||
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(SSFI),
|
||||
MachineMemOperand::MOStore, MemSize, MemSize);
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(MF, SSFI),
|
||||
MachineMemOperand::MOStore, MemSize, MemSize);
|
||||
|
||||
if (Opc != X86ISD::WIN_FTOL) {
|
||||
// Build the FP_TO_INT*_IN_MEM
|
||||
|
@ -12718,9 +12731,10 @@ static SDValue LowerFABSorFNEG(SDValue Op, SelectionDAG &DAG) {
|
|||
const TargetLowering &TLI = DAG.getTargetLoweringInfo();
|
||||
SDValue CPIdx = DAG.getConstantPool(C, TLI.getPointerTy(DAG.getDataLayout()));
|
||||
unsigned Alignment = cast<ConstantPoolSDNode>(CPIdx)->getAlignment();
|
||||
SDValue Mask = DAG.getLoad(LogicVT, dl, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, Alignment);
|
||||
SDValue Mask =
|
||||
DAG.getLoad(LogicVT, dl, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
|
||||
false, false, false, Alignment);
|
||||
|
||||
SDValue Op0 = Op.getOperand(0);
|
||||
bool IsFNABS = !IsFABS && (Op0.getOpcode() == ISD::FABS);
|
||||
|
@ -12781,9 +12795,10 @@ static SDValue LowerFCOPYSIGN(SDValue Op, SelectionDAG &DAG) {
|
|||
// scalar FP logic instructions in SSE. This allows load folding of the
|
||||
// constants into the logic instructions.
|
||||
MVT LogicVT = (VT == MVT::f64) ? MVT::v2f64 : MVT::v4f32;
|
||||
SDValue Mask1 = DAG.getLoad(LogicVT, dl, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 16);
|
||||
SDValue Mask1 =
|
||||
DAG.getLoad(LogicVT, dl, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
|
||||
false, false, false, 16);
|
||||
Op1 = DAG.getNode(ISD::SCALAR_TO_VECTOR, dl, LogicVT, Op1);
|
||||
SDValue SignBit = DAG.getNode(X86ISD::FAND, dl, LogicVT, Op1, Mask1);
|
||||
|
||||
|
@ -12804,9 +12819,10 @@ static SDValue LowerFCOPYSIGN(SDValue Op, SelectionDAG &DAG) {
|
|||
}
|
||||
C = ConstantVector::get(CV);
|
||||
CPIdx = DAG.getConstantPool(C, PtrVT, 16);
|
||||
SDValue Val = DAG.getLoad(LogicVT, dl, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(),
|
||||
false, false, false, 16);
|
||||
SDValue Val =
|
||||
DAG.getLoad(LogicVT, dl, DAG.getEntryNode(), CPIdx,
|
||||
MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
|
||||
false, false, false, 16);
|
||||
// If the magnitude operand wasn't a constant, we need to AND out the sign.
|
||||
if (!isa<ConstantFPSDNode>(Op0)) {
|
||||
Op0 = DAG.getNode(ISD::SCALAR_TO_VECTOR, dl, LogicVT, Op0);
|
||||
|
@ -16700,8 +16716,8 @@ SDValue X86TargetLowering::LowerFLT_ROUNDS_(SDValue Op,
|
|||
DAG.getFrameIndex(SSFI, getPointerTy(DAG.getDataLayout()));
|
||||
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(SSFI),
|
||||
MachineMemOperand::MOStore, 2, 2);
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(MF, SSFI),
|
||||
MachineMemOperand::MOStore, 2, 2);
|
||||
|
||||
SDValue Ops[] = { DAG.getEntryNode(), StackSlot };
|
||||
SDValue Chain = DAG.getMemIntrinsicNode(X86ISD::FNSTCW16m, DL,
|
||||
|
@ -19889,9 +19905,8 @@ X86TargetLowering::EmitVAStartSaveXMMRegsWithCustomInserter(
|
|||
// In the XMM save block, save all the XMM argument registers.
|
||||
for (int i = 3, e = MI->getNumOperands() - 1; i != e; ++i) {
|
||||
int64_t Offset = (i - 3) * 16 + VarArgsFPOffset;
|
||||
MachineMemOperand *MMO =
|
||||
F->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(RegSaveFrameIndex, Offset),
|
||||
MachineMemOperand *MMO = F->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(*F, RegSaveFrameIndex, Offset),
|
||||
MachineMemOperand::MOStore,
|
||||
/*Size=*/16, /*Align=*/16);
|
||||
BuildMI(XMMSaveMBB, DL, TII->get(MOVOpc))
|
||||
|
|
|
@ -156,10 +156,9 @@ addFrameReference(const MachineInstrBuilder &MIB, int FI, int Offset = 0) {
|
|||
Flags |= MachineMemOperand::MOLoad;
|
||||
if (MCID.mayStore())
|
||||
Flags |= MachineMemOperand::MOStore;
|
||||
MachineMemOperand *MMO =
|
||||
MF.getMachineMemOperand(MachinePointerInfo::getFixedStack(FI, Offset),
|
||||
Flags, MFI.getObjectSize(FI),
|
||||
MFI.getObjectAlignment(FI));
|
||||
MachineMemOperand *MMO = MF.getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(MF, FI, Offset), Flags,
|
||||
MFI.getObjectSize(FI), MFI.getObjectAlignment(FI));
|
||||
return addOffset(MIB.addFrameIndex(FI), Offset)
|
||||
.addMemOperand(MMO);
|
||||
}
|
||||
|
|
|
@ -4763,8 +4763,8 @@ static void expandLoadStackGuard(MachineInstrBuilder &MIB,
|
|||
const GlobalValue *GV =
|
||||
cast<GlobalValue>((*MIB->memoperands_begin())->getValue());
|
||||
unsigned Flag = MachineMemOperand::MOLoad | MachineMemOperand::MOInvariant;
|
||||
MachineMemOperand *MMO = MBB.getParent()->
|
||||
getMachineMemOperand(MachinePointerInfo::getGOT(), Flag, 8, 8);
|
||||
MachineMemOperand *MMO = MBB.getParent()->getMachineMemOperand(
|
||||
MachinePointerInfo::getGOT(*MBB.getParent()), Flag, 8, 8);
|
||||
MachineBasicBlock::iterator I = MIB.getInstr();
|
||||
|
||||
BuildMI(MBB, I, DL, TII.get(X86::MOV64rm), Reg).addReg(X86::RIP).addImm(1)
|
||||
|
|
|
@ -177,10 +177,9 @@ static MachineMemOperand *
|
|||
getFrameIndexMMO(MachineBasicBlock &MBB, int FrameIndex, unsigned flags) {
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
const MachineFrameInfo &MFI = *MF->getFrameInfo();
|
||||
MachineMemOperand *MMO =
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getFixedStack(FrameIndex),
|
||||
flags, MFI.getObjectSize(FrameIndex),
|
||||
MFI.getObjectAlignment(FrameIndex));
|
||||
MachineMemOperand *MMO = MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(*MF, FrameIndex), flags,
|
||||
MFI.getObjectSize(FrameIndex), MFI.getObjectAlignment(FrameIndex));
|
||||
return MMO;
|
||||
}
|
||||
|
||||
|
|
|
@ -151,8 +151,9 @@ SDNode *XCoreDAGToDAGISel::Select(SDNode *N) {
|
|||
MVT::Other, CPIdx,
|
||||
CurDAG->getEntryNode());
|
||||
MachineSDNode::mmo_iterator MemOp = MF->allocateMemRefsArray(1);
|
||||
MemOp[0] = MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getConstantPool(), MachineMemOperand::MOLoad, 4, 4);
|
||||
MemOp[0] =
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getConstantPool(*MF),
|
||||
MachineMemOperand::MOLoad, 4, 4);
|
||||
cast<MachineSDNode>(node)->setMemRefs(MemOp, MemOp + 1);
|
||||
return node;
|
||||
}
|
||||
|
|
|
@ -839,7 +839,7 @@ LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const {
|
|||
SDValue FIN = DAG.getFrameIndex(FI, MVT::i32);
|
||||
return DAG.getLoad(
|
||||
getPointerTy(DAG.getDataLayout()), SDLoc(Op), DAG.getEntryNode(), FIN,
|
||||
MachinePointerInfo::getFixedStack(FI), false, false, false, 0);
|
||||
MachinePointerInfo::getFixedStack(MF, FI), false, false, false, 0);
|
||||
}
|
||||
|
||||
SDValue XCoreTargetLowering::
|
||||
|
@ -1367,8 +1367,8 @@ XCoreTargetLowering::LowerCCCArguments(SDValue Chain,
|
|||
//from this parameter
|
||||
SDValue FIN = DAG.getFrameIndex(FI, MVT::i32);
|
||||
ArgIn = DAG.getLoad(VA.getLocVT(), dl, Chain, FIN,
|
||||
MachinePointerInfo::getFixedStack(FI),
|
||||
false, false, false, 0);
|
||||
MachinePointerInfo::getFixedStack(MF, FI), false,
|
||||
false, false, 0);
|
||||
}
|
||||
const ArgDataPair ADP = { ArgIn, Ins[i].Flags };
|
||||
ArgData.push_back(ADP);
|
||||
|
@ -1517,9 +1517,10 @@ XCoreTargetLowering::LowerReturn(SDValue Chain,
|
|||
// Create a SelectionDAG node corresponding to a store
|
||||
// to this memory location.
|
||||
SDValue FIN = DAG.getFrameIndex(FI, MVT::i32);
|
||||
MemOpChains.push_back(DAG.getStore(Chain, dl, OutVals[i], FIN,
|
||||
MachinePointerInfo::getFixedStack(FI), false, false,
|
||||
0));
|
||||
MemOpChains.push_back(DAG.getStore(
|
||||
Chain, dl, OutVals[i], FIN,
|
||||
MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI), false,
|
||||
false, 0));
|
||||
}
|
||||
|
||||
// Transform all store nodes into one single node because
|
||||
|
|
|
@ -368,11 +368,10 @@ void XCoreInstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
|
|||
DL = I->getDebugLoc();
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
const MachineFrameInfo &MFI = *MF->getFrameInfo();
|
||||
MachineMemOperand *MMO =
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getFixedStack(FrameIndex),
|
||||
MachineMemOperand::MOStore,
|
||||
MFI.getObjectSize(FrameIndex),
|
||||
MFI.getObjectAlignment(FrameIndex));
|
||||
MachineMemOperand *MMO = MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(*MF, FrameIndex),
|
||||
MachineMemOperand::MOStore, MFI.getObjectSize(FrameIndex),
|
||||
MFI.getObjectAlignment(FrameIndex));
|
||||
BuildMI(MBB, I, DL, get(XCore::STWFI))
|
||||
.addReg(SrcReg, getKillRegState(isKill))
|
||||
.addFrameIndex(FrameIndex)
|
||||
|
@ -391,11 +390,10 @@ void XCoreInstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
|
|||
DL = I->getDebugLoc();
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
const MachineFrameInfo &MFI = *MF->getFrameInfo();
|
||||
MachineMemOperand *MMO =
|
||||
MF->getMachineMemOperand(MachinePointerInfo::getFixedStack(FrameIndex),
|
||||
MachineMemOperand::MOLoad,
|
||||
MFI.getObjectSize(FrameIndex),
|
||||
MFI.getObjectAlignment(FrameIndex));
|
||||
MachineMemOperand *MMO = MF->getMachineMemOperand(
|
||||
MachinePointerInfo::getFixedStack(*MF, FrameIndex),
|
||||
MachineMemOperand::MOLoad, MFI.getObjectSize(FrameIndex),
|
||||
MFI.getObjectAlignment(FrameIndex));
|
||||
BuildMI(MBB, I, DL, get(XCore::LDWFI), DestReg)
|
||||
.addFrameIndex(FrameIndex)
|
||||
.addImm(0)
|
||||
|
|
Loading…
Reference in New Issue