From 85925cbf6bc575ff35971c339dfa5734bf4ec3a2 Mon Sep 17 00:00:00 2001 From: Chenyang Xu 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(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(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 }