summaryrefslogtreecommitdiff
path: root/llvm/lib/IRPrinter/IRPrintingPasses.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/IRPrinter/IRPrintingPasses.cpp')
-rw-r--r--llvm/lib/IRPrinter/IRPrintingPasses.cpp21
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();
}