//===- PassTimingInfo.h - pass execution timing -----------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// \file /// /// This header defines classes/functions to handle pass execution timing /// information with interfaces for both pass managers. /// //===----------------------------------------------------------------------===// #ifndef LLVM_IR_PASSTIMINGINFO_H #define LLVM_IR_PASSTIMINGINFO_H #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/Timer.h" #include <memory> #include <utility> namespace llvm { class Pass; class PassInstrumentationCallbacks; class raw_ostream; /// If -time-passes has been specified, report the timings immediately and then /// reset the timers to zero. By default it uses the stream created by /// CreateInfoOutputFile(). void reportAndResetTimings(raw_ostream *OutStream = nullptr); /// Request the timer for this legacy-pass-manager's pass instance. Timer *getPassTimer(Pass *); /// This class implements -time-passes functionality for new pass manager. /// It provides the pass-instrumentation callbacks that measure the pass /// execution time. They collect timing info into individual timers as /// passes are being run. At the end of its life-time it prints the resulting /// timing report. class TimePassesHandler { … }; } // namespace llvm #endif