[llvm] Add a pass to collect dropped variable statistics (PR #102233)
Adrian Prantl via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 21 14:28:46 PDT 2024
================
@@ -578,6 +579,83 @@ class PrintCrashIRInstrumentation {
static void SignalHandler(void *);
};
+/// A class to collect and print dropped debug information variable statistics.
+/// After every LLVM IR pass is run, it will print how many #dbg_values were
+/// dropped due to that pass.
+class DroppedVariableStats {
+public:
+ DroppedVariableStats(bool DroppedVarStatsEnabled) {
+ if (DroppedVarStatsEnabled)
+ llvm::outs()
+ << "Pass Level, Pass Name, Num of Dropped Variables, Func or "
+ "Module Name\n";
+ };
+ // We intend this to be unique per-compilation, thus no copies.
+ DroppedVariableStats(const DroppedVariableStats &) = delete;
+ void operator=(const DroppedVariableStats &) = delete;
+
+ void registerCallbacks(PassInstrumentationCallbacks &PIC);
+ void runBeforePass(StringRef PassID, Any IR);
+ void runAfterPass(StringRef PassID, Any IR, const PreservedAnalyses &PA);
+ void runAfterPassInvalidated(StringRef PassID, const PreservedAnalyses &PA);
+ bool getPassDroppedVariables() { return PassDroppedVariables; }
+
+private:
+ bool PassDroppedVariables = false;
+ /// VarID is a unique key that represents a #dbg_value
----------------
adrian-prantl wrote:
```suggestion
/// A unique key that represents a #dbg_value.
```
https://github.com/llvm/llvm-project/pull/102233
More information about the llvm-commits
mailing list