diff options
Diffstat (limited to 'llvm/lib/IRPrinter/IRPrintingPasses.cpp')
| -rw-r--r-- | llvm/lib/IRPrinter/IRPrintingPasses.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/llvm/lib/IRPrinter/IRPrintingPasses.cpp b/llvm/lib/IRPrinter/IRPrintingPasses.cpp index 9552ce3862c5..52b242b4dcd5 100644 --- a/llvm/lib/IRPrinter/IRPrintingPasses.cpp +++ b/llvm/lib/IRPrinter/IRPrintingPasses.cpp @@ -31,6 +31,12 @@ PrintModulePass::PrintModulePass(raw_ostream &OS, const std::string &Banner, EmitSummaryIndex(EmitSummaryIndex) {} PreservedAnalyses PrintModulePass::run(Module &M, ModuleAnalysisManager &AM) { + // RemoveDIs: there's no textual representation of the DPValue debug-info, + // convert to dbg.values before writing out. + bool ShouldConvert = M.IsNewDbgInfoFormat; + if (ShouldConvert) + M.convertFromNewDbgValues(); + if (llvm::isFunctionInPrintList("*")) { if (!Banner.empty()) OS << Banner << "\n"; @@ -53,10 +59,13 @@ PreservedAnalyses PrintModulePass::run(Module &M, ModuleAnalysisManager &AM) { : nullptr; if (Index) { if (Index->modulePaths().empty()) - Index->addModule("", 0); + Index->addModule(""); Index->print(OS); } + if (ShouldConvert) + M.convertToNewDbgValues(); + return PreservedAnalyses::all(); } @@ -66,11 +75,21 @@ PrintFunctionPass::PrintFunctionPass(raw_ostream &OS, const std::string &Banner) PreservedAnalyses PrintFunctionPass::run(Function &F, FunctionAnalysisManager &) { + // RemoveDIs: there's no textual representation of the DPValue debug-info, + // convert to dbg.values before writing out. + bool ShouldConvert = F.IsNewDbgInfoFormat; + if (ShouldConvert) + F.convertFromNewDbgValues(); + if (isFunctionInPrintList(F.getName())) { if (forcePrintModuleIR()) OS << Banner << " (function: " << F.getName() << ")\n" << *F.getParent(); else OS << Banner << '\n' << static_cast<Value &>(F); } + + if (ShouldConvert) + F.convertToNewDbgValues(); + return PreservedAnalyses::all(); } |
