Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
PGOCtxProfLowering.h
Go to the documentation of this file.
1//===-- PGOCtxProfLowering.h - Contextual PGO Instr. Lowering ---*- 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// This file declares the PGOCtxProfLoweringPass class.
10//
11//===----------------------------------------------------------------------===//
12#ifndef LLVM_TRANSFORMS_INSTRUMENTATION_PGOCTXPROFLOWERING_H
13#define LLVM_TRANSFORMS_INSTRUMENTATION_PGOCTXPROFLOWERING_H
14
15#include "llvm/IR/PassManager.h"
16namespace llvm {
17class Type;
18
19class PGOCtxProfLoweringPass : public PassInfoMixin<PGOCtxProfLoweringPass> {
20public:
21 explicit PGOCtxProfLoweringPass() = default;
22 // True if contextual instrumentation is enabled.
23 static bool isCtxIRPGOInstrEnabled();
24
26};
27
28// Utility pass blocking inlining for any function that may be overridden during
29// linking by a prevailing copy.
30// This avoids confusingly collecting profiles for the same GUID corresponding
31// to different variants of the function. We could do like PGO and identify
32// functions by a (GUID, Hash) tuple, but since the ctxprof "use" waits for
33// thinlto to happen before performing any further optimizations, it's
34// unnecessary to collect profiles for non-prevailing copies.
35class NoinlineNonPrevailing : public PassInfoMixin<NoinlineNonPrevailing> {
36public:
37 explicit NoinlineNonPrevailing() = default;
38
40};
41
42} // namespace llvm
43#endif
This header defines various interfaces for pass management in LLVM.
ModuleAnalysisManager MAM
A Module instance is used to store all the information related to an LLVM module.
Definition Module.h:67
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM)
A set of analyses that are preserved following a run of a transformation pass.
Definition Analysis.h:112
The instances of the Type class are immutable: once they are created, they are never changed.
Definition Type.h:45
This is an optimization pass for GlobalISel generic memory operations.
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
Definition MIRParser.h:39
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition PassManager.h:70