LLVM 19.0.0git
CycleAnalysis.cpp
Go to the documentation of this file.
1//===- CycleAnalysis.cpp - Compute CycleInfo for LLVM IR ------------------===//
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
11#include "llvm/IR/CFG.h" // for successors found by ADL in GenericCycleImpl.h
13
14using namespace llvm;
15
16namespace llvm {
17class Module;
18}
19
21 CycleInfo CI;
22 CI.compute(F);
23 return CI;
24}
25
26AnalysisKey CycleAnalysis::Key;
27
29
32 OS << "CycleInfo for function: " << F.getName() << "\n";
34
36}
37
38//===----------------------------------------------------------------------===//
39// CycleInfoWrapperPass Implementation
40//===----------------------------------------------------------------------===//
41//
42// The implementation details of the wrapper pass that holds a CycleInfo
43// suitable for use with the legacy pass manager.
44//
45//===----------------------------------------------------------------------===//
46
48
51}
52
53INITIALIZE_PASS_BEGIN(CycleInfoWrapperPass, "cycles", "Cycle Info Analysis",
54 true, true)
56 true)
57
58void CycleInfoWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const {
59 AU.setPreservesAll();
60}
61
63 CI.clear();
64
65 F = &Func;
66 CI.compute(Func);
67 return false;
68}
69
71 OS << "CycleInfo for function: " << F->getName() << "\n";
72 CI.print(OS);
73}
74
76 CI.clear();
77 F = nullptr;
78}
basic Basic Alias true
block Block Frequency Analysis
Analysis containing CSE Info
Definition: CSEInfo.cpp:27
cycles
This file declares an analysis pass that computes CycleInfo for LLVM IR, specialized from GenericCycl...
This template implementation resides in a separate file so that it does not get injected into every ....
This file provides various utilities for inspecting and working with the control flow graph in LLVM I...
#define F(x, y, z)
Definition: MD5.cpp:55
#define INITIALIZE_PASS_END(passName, arg, name, cfg, analysis)
Definition: PassSupport.h:59
#define INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis)
Definition: PassSupport.h:52
raw_pwrite_stream & OS
A container for analyses that lazily runs them and caches their results.
Definition: PassManager.h:348
PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)
Get the result of an analysis pass for a given IR unit.
Definition: PassManager.h:500
Represent the analysis usage information of a pass.
Analysis pass which computes a CycleInfo.
Definition: CycleAnalysis.h:47
CycleInfo run(Function &F, FunctionAnalysisManager &)
Run the analysis pass over a function and produce a dominator tree.
CycleInfoPrinterPass(raw_ostream &OS)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
Legacy analysis pass which computes a CycleInfo.
Definition: CycleAnalysis.h:26
void print(raw_ostream &OS, const Module *M=nullptr) const override
print - Print out the internal state of the pass.
bool runOnFunction(Function &F) override
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass.
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
FunctionPass class - This class is used to implement most global optimizations.
Definition: Pass.h:311
void print(raw_ostream &Out) const
Print the cycle info.
void clear()
Reset the object to its initial state.
void compute(FunctionT &F)
Compute the cycle info for a function.
A possibly irreducible generalization of a Loop.
A Module instance is used to store all the information related to an LLVM module.
Definition: Module.h:65
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
A set of analyses that are preserved following a run of a transformation pass.
Definition: Analysis.h:109
static PreservedAnalyses all()
Construct a special preserved set that preserves all passes.
Definition: Analysis.h:115
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
void initializeCycleInfoWrapperPassPass(PassRegistry &)
Printable print(const GCNRegPressure &RP, const GCNSubtarget *ST=nullptr)
A special type used by analysis passes to provide an address that identifies that particular analysis...
Definition: Analysis.h:26