//===- TGTimer.cpp - TableGen Timer implementation --------------*- 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 // //===----------------------------------------------------------------------===// // // Implement the tablegen timer class. // //===----------------------------------------------------------------------===// #include "llvm/TableGen/TGTimer.h" using namespace llvm; // These functions implement the phase timing facility. Starting a timer // when one is already running stops the running one. void TGTimer::startTimer(StringRef Name) { if (!TimingGroup) return; if (LastTimer && LastTimer->isRunning()) { LastTimer->stopTimer(); if (BackendTimer) { LastTimer->clear(); BackendTimer = false; } } LastTimer = std::make_unique("", Name, *TimingGroup); LastTimer->startTimer(); } void TGTimer::stopTimer() { if (!TimingGroup) return; assert(LastTimer && "No phase timer was started"); LastTimer->stopTimer(); } void TGTimer::startBackendTimer(StringRef Name) { if (!TimingGroup) return; startTimer(Name); BackendTimer = true; } void TGTimer::stopBackendTimer() { if (!TimingGroup || !BackendTimer) return; stopTimer(); BackendTimer = false; }