Author: Arthur Eubanks Date: 2023-03-15T09:19:05-07:00 New Revision: 6d7da41b80e08a845e062dc62926cd58b4f1f5a8
URL: https://github.com/llvm/llvm-project/commit/6d7da41b80e08a845e062dc62926cd58b4f1f5a8 DIFF: https://github.com/llvm/llvm-project/commit/6d7da41b80e08a845e062dc62926cd58b4f1f5a8.diff LOG: [Debugify] Invalidate function analyses Since debugify inserts instructions. Added: Modified: clang/lib/CodeGen/BackendUtil.cpp llvm/include/llvm/Transforms/Utils/Debugify.h llvm/lib/Transforms/Utils/Debugify.cpp llvm/tools/opt/NewPMDriver.cpp Removed: ################################################################################ diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index fffaeb8a6ff79..92bef4be9cf8f 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -857,7 +857,7 @@ void EmitAssemblyHelper::RunOptimizationPipeline( if (!CodeGenOpts.DIBugsReportFilePath.empty()) Debugify.setOrigDIVerifyBugsReportFilePath( CodeGenOpts.DIBugsReportFilePath); - Debugify.registerCallbacks(PIC); + Debugify.registerCallbacks(PIC, FAM); } // Attempt to load pass plugins and register their callbacks with PB. for (auto &PluginFN : CodeGenOpts.PassPlugins) { diff --git a/llvm/include/llvm/Transforms/Utils/Debugify.h b/llvm/include/llvm/Transforms/Utils/Debugify.h index 24b9eeab6ee45..795768037da7d 100644 --- a/llvm/include/llvm/Transforms/Utils/Debugify.h +++ b/llvm/include/llvm/Transforms/Utils/Debugify.h @@ -192,8 +192,8 @@ class DebugifyEachInstrumentation { DebugifyStatsMap *DIStatsMap = nullptr; public: - - void registerCallbacks(PassInstrumentationCallbacks &PIC); + void registerCallbacks(PassInstrumentationCallbacks &PIC, + FunctionAnalysisManager &FAM); // Used within DebugifyMode::SyntheticDebugInfo mode. void setDIStatsMap(DebugifyStatsMap &StatMap) { DIStatsMap = &StatMap; } const DebugifyStatsMap &getDebugifyStatsMap() const { return *DIStatsMap; } diff --git a/llvm/lib/Transforms/Utils/Debugify.cpp b/llvm/lib/Transforms/Utils/Debugify.cpp index 989473693a0bc..8e10a91baebd6 100644 --- a/llvm/lib/Transforms/Utils/Debugify.cpp +++ b/llvm/lib/Transforms/Utils/Debugify.cpp @@ -1027,16 +1027,22 @@ static bool isIgnoredPass(StringRef PassID) { } void DebugifyEachInstrumentation::registerCallbacks( - PassInstrumentationCallbacks &PIC) { - PIC.registerBeforeNonSkippedPassCallback([this](StringRef P, Any IR) { + PassInstrumentationCallbacks &PIC, FunctionAnalysisManager &FAM) { + PIC.registerBeforeNonSkippedPassCallback([this, &FAM](StringRef P, Any IR) { if (isIgnoredPass(P)) return; - if (const auto **F = any_cast<const Function *>(&IR)) + PreservedAnalyses PA; + PA.preserveSet<CFGAnalyses>(); + if (const auto **F = any_cast<const Function *>(&IR)) { applyDebugify(*const_cast<Function *>(*F), Mode, DebugInfoBeforePass, P); - else if (const auto **M = any_cast<const Module *>(&IR)) + FAM.invalidate(*const_cast<Function *>(*F), PA); + } else if (const auto **M = any_cast<const Module *>(&IR)) { applyDebugify(*const_cast<Module *>(*M), Mode, DebugInfoBeforePass, P); + for (Function &F : *const_cast<Module *>(*M)) + FAM.invalidate(F, PA); + } }); PIC.registerAfterPassCallback([this](StringRef P, Any IR, const PreservedAnalyses &PassPA) { diff --git a/llvm/tools/opt/NewPMDriver.cpp b/llvm/tools/opt/NewPMDriver.cpp index bb9711e7aa65a..697f2649d20b0 100644 --- a/llvm/tools/opt/NewPMDriver.cpp +++ b/llvm/tools/opt/NewPMDriver.cpp @@ -402,13 +402,13 @@ bool llvm::runPassPipeline(StringRef Arg0, Module &M, TargetMachine *TM, if (DebugifyEach) { Debugify.setDIStatsMap(DIStatsMap); Debugify.setDebugifyMode(DebugifyMode::SyntheticDebugInfo); - Debugify.registerCallbacks(PIC); + Debugify.registerCallbacks(PIC, FAM); } else if (VerifyEachDebugInfoPreserve) { Debugify.setDebugInfoBeforePass(DebugInfoBeforePass); Debugify.setDebugifyMode(DebugifyMode::OriginalDebugInfo); Debugify.setOrigDIVerifyBugsReportFilePath( VerifyDIPreserveExport); - Debugify.registerCallbacks(PIC); + Debugify.registerCallbacks(PIC, FAM); } PipelineTuningOptions PTO; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits