Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/TableGen/TGTimer.cpp
213765 views
1
//===- TGTimer.cpp - TableGen Timer implementation --------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// Implement the tablegen timer class.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#include "llvm/TableGen/TGTimer.h"
14
using namespace llvm;
15
16
// These functions implement the phase timing facility. Starting a timer
17
// when one is already running stops the running one.
18
void TGTimer::startTimer(StringRef Name) {
19
if (!TimingGroup)
20
return;
21
if (LastTimer && LastTimer->isRunning()) {
22
LastTimer->stopTimer();
23
if (BackendTimer) {
24
LastTimer->clear();
25
BackendTimer = false;
26
}
27
}
28
29
LastTimer = std::make_unique<Timer>("", Name, *TimingGroup);
30
LastTimer->startTimer();
31
}
32
33
void TGTimer::stopTimer() {
34
if (!TimingGroup)
35
return;
36
37
assert(LastTimer && "No phase timer was started");
38
LastTimer->stopTimer();
39
}
40
41
void TGTimer::startBackendTimer(StringRef Name) {
42
if (!TimingGroup)
43
return;
44
45
startTimer(Name);
46
BackendTimer = true;
47
}
48
49
void TGTimer::stopBackendTimer() {
50
if (!TimingGroup || !BackendTimer)
51
return;
52
stopTimer();
53
BackendTimer = false;
54
}
55
56