LLVM 20.0.0git
IncrementalSourceMgr.cpp
Go to the documentation of this file.
1//===-------------------- IncrementalSourceMgr.cpp ------------------------===//
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/// \file
10/// This file defines some implementations for IncrementalSourceMgr.
11///
12//===----------------------------------------------------------------------===//
13
15#ifndef NDEBUG
16#include "llvm/Support/Format.h"
17#endif
18
19using namespace llvm;
20using namespace llvm::mca;
21
23 Staging.clear();
24 InstStorage.clear();
25 TotalCounter = 0U;
26 EOS = false;
27}
28
30 ++TotalCounter;
31 Instruction *I = Staging.front();
32 Staging.pop_front();
33 I->reset();
34
35 if (InstFreedCB)
36 InstFreedCB(I);
37}
38
39#ifndef NDEBUG
41 unsigned MaxInstStorageSize = InstStorage.size();
42 if (MaxInstStorageSize <= TotalCounter) {
43 auto Ratio = double(MaxInstStorageSize) / double(TotalCounter);
44 OS << "Cache ratio = " << MaxInstStorageSize << " / " << TotalCounter
45 << llvm::format(" (%.2f%%)", (1.0 - Ratio) * 100.0) << "\n";
46 } else {
47 OS << "Error: Number of created instructions "
48 << "are larger than the number of issued instructions\n";
49 }
50}
51#endif
This file contains IncrementalSourceMgr, an implementation of SourceMgr that allows users to add new ...
#define I(x, y, z)
Definition: MD5.cpp:58
raw_pwrite_stream & OS
void printStatistic(raw_ostream &OS)
Print statistic about instruction recycling stats.
void updateNext() override
Advance to the next SourceRef.
An instruction propagated through the simulated instruction pipeline.
Definition: Instruction.h:600
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition: raw_ostream.h:52
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
format_object< Ts... > format(const char *Fmt, const Ts &... Vals)
These are helper functions used to produce formatted output.
Definition: Format.h:125