From a8cde5881bf55fe986210c50dae49655e53c6eba Mon Sep 17 00:00:00 2001 From: Daniel Sanders Date: Fri, 17 Apr 2020 10:24:35 -0700 Subject: [PATCH] Don't accidentally create MachineFunctions in mir-debugify/mir-strip-debugify We should only modify existing ones. Previously, we were creating MachineFunctions for externally-available functions. AFAICT this was benign in tree but ultimately led to asan bugs in our out of tree target. --- lib/CodeGen/MachineDebugify.cpp | 5 ++++- lib/CodeGen/MachineStripDebug.cpp | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/CodeGen/MachineDebugify.cpp b/lib/CodeGen/MachineDebugify.cpp index bee9b634675..bc607cabcc6 100644 --- a/lib/CodeGen/MachineDebugify.cpp +++ b/lib/CodeGen/MachineDebugify.cpp @@ -27,7 +27,10 @@ using namespace llvm; namespace { bool applyDebugifyMetadataToMachineFunction(MachineModuleInfo &MMI, DIBuilder &DIB, Function &F) { - MachineFunction &MF = MMI.getOrCreateMachineFunction(F); + MachineFunction *MaybeMF = MMI.getMachineFunction(F); + if (!MaybeMF) + return false; + MachineFunction &MF = *MaybeMF; DISubprogram *SP = F.getSubprogram(); assert(SP && "IR Debugify just created it?"); diff --git a/lib/CodeGen/MachineStripDebug.cpp b/lib/CodeGen/MachineStripDebug.cpp index 48b50ceb092..a1cb12f9127 100644 --- a/lib/CodeGen/MachineStripDebug.cpp +++ b/lib/CodeGen/MachineStripDebug.cpp @@ -45,7 +45,10 @@ struct StripDebugMachineModule : public ModulePass { bool Changed = false; for (Function &F : M.functions()) { - MachineFunction &MF = MMI.getOrCreateMachineFunction(F); + MachineFunction *MaybeMF = MMI.getMachineFunction(F); + if (!MaybeMF) + continue; + MachineFunction &MF = *MaybeMF; for (MachineBasicBlock &MBB : MF) { for (MachineBasicBlock::iterator I = MBB.begin(), E = MBB.end(); I != E;) {