[CodeGen] Allow printing MachineMemOperands with less context in SDAGDumper

Don't assume SelectionDAG is non-null as the targets can use it with a
null pointer.

Differential Revision: https://reviews.llvm.org/D44611

llvm-svn: 329908
This commit is contained in:
Francis Visoiu Mistrih 2018-04-12 12:59:50 +00:00
parent 9737535943
commit 3c0d61b7c0
1 changed files with 21 additions and 8 deletions

View File

@ -425,15 +425,28 @@ static Printable PrintNodeId(const SDNode &Node) {
// Print the MMO with more information from the SelectionDAG.
static void printMemOperand(raw_ostream &OS, const MachineMemOperand &MMO,
const SelectionDAG *G) {
const MachineFunction &MF = G->getMachineFunction();
const Function &F = MF.getFunction();
const MachineFrameInfo &MFI = MF.getFrameInfo();
const TargetInstrInfo *TII = G->getSubtarget().getInstrInfo();
ModuleSlotTracker MST(F.getParent());
MST.incorporateFunction(F);
const MachineFunction *MF, const Module *M,
const MachineFrameInfo *MFI,
const TargetInstrInfo *TII, LLVMContext &Ctx) {
ModuleSlotTracker MST(M);
if (MF)
MST.incorporateFunction(MF->getFunction());
SmallVector<StringRef, 0> SSNs;
MMO.print(OS, MST, SSNs, *G->getContext(), &MFI, TII);
MMO.print(OS, MST, SSNs, Ctx, MFI, TII);
}
static void printMemOperand(raw_ostream &OS, const MachineMemOperand &MMO,
const SelectionDAG *G) {
if (G) {
const MachineFunction *MF = &G->getMachineFunction();
return printMemOperand(OS, MMO, MF, MF->getFunction().getParent(),
&MF->getFrameInfo(), G->getSubtarget().getInstrInfo(),
*G->getContext());
} else {
LLVMContext Ctx;
return printMemOperand(OS, MMO, /*MF=*/nullptr, /*M=*/nullptr,
/*MFI=*/nullptr, /*TII=*/nullptr, Ctx);
}
}
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)