diff options
Diffstat (limited to 'llvm/lib/CodeGen/MachineStripDebug.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineStripDebug.cpp | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/MachineStripDebug.cpp b/llvm/lib/CodeGen/MachineStripDebug.cpp index 0129718..aeb2789 100644 --- a/llvm/lib/CodeGen/MachineStripDebug.cpp +++ b/llvm/lib/CodeGen/MachineStripDebug.cpp @@ -15,15 +15,30 @@ #include "llvm/CodeGen/Passes.h" #include "llvm/IR/DebugInfo.h" #include "llvm/InitializePasses.h" +#include "llvm/Support/CommandLine.h" #define DEBUG_TYPE "mir-strip-debug" using namespace llvm; namespace { +cl::opt<bool> + OnlyDebugifiedDefault("mir-strip-debugify-only", + cl::desc("Should mir-strip-debug only strip debug " + "info from debugified modules by default"), + cl::init(true)); struct StripDebugMachineModule : public ModulePass { bool runOnModule(Module &M) override { + if (OnlyDebugified) { + NamedMDNode *DebugifyMD = M.getNamedMetadata("llvm.debugify"); + if (!DebugifyMD) { + LLVM_DEBUG(dbgs() << "Not stripping debug info" + " (debugify metadata not found)?\n"); + return false; + } + } + MachineModuleInfo &MMI = getAnalysis<MachineModuleInfoWrapperPass>().getMMI(); @@ -89,7 +104,9 @@ struct StripDebugMachineModule : public ModulePass { return Changed; } - StripDebugMachineModule() : ModulePass(ID) {} + StripDebugMachineModule() : StripDebugMachineModule(OnlyDebugifiedDefault) {} + StripDebugMachineModule(bool OnlyDebugified) + : ModulePass(ID), OnlyDebugified(OnlyDebugified) {} void getAnalysisUsage(AnalysisUsage &AU) const override { AU.addRequired<MachineModuleInfoWrapperPass>(); @@ -97,6 +114,9 @@ struct StripDebugMachineModule : public ModulePass { } static char ID; // Pass identification. + +protected: + bool OnlyDebugified; }; char StripDebugMachineModule::ID = 0; @@ -107,6 +127,6 @@ INITIALIZE_PASS_BEGIN(StripDebugMachineModule, DEBUG_TYPE, INITIALIZE_PASS_END(StripDebugMachineModule, DEBUG_TYPE, "Machine Strip Debug Module", false, false) -ModulePass *createStripDebugMachineModulePass() { - return new StripDebugMachineModule(); +ModulePass *createStripDebugMachineModulePass(bool OnlyDebugified) { + return new StripDebugMachineModule(OnlyDebugified); } |