[Mlir-commits] [mlir] [MLIR][Timing] Fix timing report of nested pass pipeline and negative Rest field when using -mlir-timing (Try to close #169443) (PR #169615)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Wed Nov 26 19:25:10 PST 2025


https://github.com/Xubaidu updated https://github.com/llvm/llvm-project/pull/169615

>From 85925cbf6bc575ff35971c339dfa5734bf4ec3a2 Mon Sep 17 00:00:00 2001
From: Chenyang Xu <chenyangx at nvidia.com>
Date: Wed, 26 Nov 2025 14:52:34 +0800
Subject: [PATCH] fix timing

---
 mlir/lib/Pass/PassTiming.cpp    |  5 ++---
 mlir/test/Pass/pass-timing.mlir | 20 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/mlir/lib/Pass/PassTiming.cpp b/mlir/lib/Pass/PassTiming.cpp
index dab56f09a72eb..c67f99453b8bb 100644
--- a/mlir/lib/Pass/PassTiming.cpp
+++ b/mlir/lib/Pass/PassTiming.cpp
@@ -90,8 +90,8 @@ struct PassTiming : public PassInstrumentation {
     auto &activeTimers = activeThreadTimers[tid];
     auto &parentScope = activeTimers.empty() ? rootScope : activeTimers.back();
 
+    parentTimerIndices[{tid, pass}] = activeTimers.size();
     if (auto *adaptor = dyn_cast<OpToOpPassAdaptor>(pass)) {
-      parentTimerIndices[{tid, pass}] = activeTimers.size();
       auto scope =
           parentScope.nest(pass->getThreadingSiblingOrThis(),
                            [adaptor]() { return adaptor->getAdaptorName(); });
@@ -107,8 +107,7 @@ struct PassTiming : public PassInstrumentation {
 
   void runAfterPass(Pass *pass, Operation *) override {
     auto tid = llvm::get_threadid();
-    if (isa<OpToOpPassAdaptor>(pass))
-      parentTimerIndices.erase({tid, pass});
+    parentTimerIndices.erase({tid, pass});
     auto &activeTimers = activeThreadTimers[tid];
     assert(!activeTimers.empty() && "expected active timer");
     activeTimers.pop_back();
diff --git a/mlir/test/Pass/pass-timing.mlir b/mlir/test/Pass/pass-timing.mlir
index cfb4b74cd19ca..2b8c306822b2d 100644
--- a/mlir/test/Pass/pass-timing.mlir
+++ b/mlir/test/Pass/pass-timing.mlir
@@ -5,6 +5,8 @@
 // RUN: mlir-opt %s -mlir-disable-threading=false -verify-each=true -pass-pipeline='builtin.module(func.func(cse,canonicalize,cse))' -mlir-timing -mlir-timing-display=list 2>&1 | FileCheck -check-prefix=MT_LIST %s
 // RUN: mlir-opt %s -mlir-disable-threading=false -verify-each=true -pass-pipeline='builtin.module(func.func(cse,canonicalize,cse))' -mlir-timing -mlir-timing-display=tree 2>&1 | FileCheck -check-prefix=MT_PIPELINE %s
 // RUN: mlir-opt %s -mlir-disable-threading=true -verify-each=false -test-pm-nested-pipeline -mlir-timing -mlir-timing-display=tree 2>&1 | FileCheck -check-prefix=NESTED_PIPELINE %s
+// RUN: mlir-opt %s -mlir-disable-threading=true -verify-each=true -pass-pipeline='builtin.module(func.func(cse,canonicalize,cse),inline)' -mlir-timing -mlir-timing-display=tree 2>&1 | FileCheck -check-prefix=DYNAMIC-PIPELINE %s
+// RUN: mlir-opt %s -mlir-disable-threading=false -verify-each=true -pass-pipeline='builtin.module(func.func(cse,canonicalize,cse),inline)' -mlir-timing -mlir-timing-display=tree 2>&1 | FileCheck -check-prefix=DYNAMIC-PIPELINE %s
 
 // LIST: Execution time report
 // LIST: Total Execution Time:
@@ -95,6 +97,24 @@
 // NESTED_PIPELINE-NEXT: Rest
 // NESTED_PIPELINE-NEXT: Total
 
+// DYNAMIC-PIPELINE: Execution time report
+// DYNAMIC-PIPELINE: Total Execution Time:
+// DYNAMIC-PIPELINE: Name
+// DYNAMIC-PIPELINE-NEXT: Parser
+// DYNAMIC-PIPELINE-NEXT: 'func.func' Pipeline
+// DYNAMIC-PIPELINE-NEXT:   CSE
+// DYNAMIC-PIPELINE-NEXT:     (A) DominanceInfo
+// DYNAMIC-PIPELINE-NEXT:   Canonicalizer
+// DYNAMIC-PIPELINE-NEXT:   CSE
+// DYNAMIC-PIPELINE-NEXT:     (A) DominanceInfo
+// DYNAMIC-PIPELINE-NEXT: Inliner
+// DYNAMIC-PIPELINE-NEXT:   (A) CallGraph
+// DYNAMIC-PIPELINE-NEXT:   'func.func' Pipeline
+// DYNAMIC-PIPELINE-NEXT:     Canonicalizer
+// DYNAMIC-PIPELINE-NEXT: Output
+// DYNAMIC-PIPELINE-NEXT: Rest
+// DYNAMIC-PIPELINE-NEXT: Total
+
 func.func @foo() {
   return
 }



More information about the Mlir-commits mailing list