LLVM 20.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
10#include "llvm/IR/CFG.h" // for successors found by ADL in GenericCycleImpl.h
12
13using namespace llvm;
14
15namespace llvm {
16class Module;
17} // namespace llvm
18
20 CycleInfo CI;
21 CI.compute(F);
22 return CI;
23}
24
25AnalysisKey CycleAnalysis::Key;
26
28
31 OS << "CycleInfo for function: " << F.getName() << "\n";
33
35}
36
40 CI.verify();
42}
43
44//===----------------------------------------------------------------------===//
45// CycleInfoWrapperPass Implementation
46//===----------------------------------------------------------------------===//
47//
48// The implementation details of the wrapper pass that holds a CycleInfo
49// suitable for use with the legacy pass manager.
50//
51//===----------------------------------------------------------------------===//
52
54
57}
58
59INITIALIZE_PASS_BEGIN(CycleInfoWrapperPass, "cycles", "Cycle Info Analysis",
60 true, true)
62 true)
63
64void CycleInfoWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const {
65 AU.setPreservesAll();
66}
67
69 CI.clear();
70
71 F = &Func;
72 CI.compute(Func);
73 return false;
74}
75
77 OS << "CycleInfo for function: " << F->getName() << "\n";
78 CI.print(OS);
79}
80
82 CI.clear();
83 F = nullptr;
84}
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 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:57
#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:253
PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)
Get the result of an analysis pass for a given IR unit.
Definition: PassManager.h:410
Represent the analysis usage information of a pass.
Analysis pass which computes a CycleInfo.
Definition: CycleAnalysis.h:46
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:25
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:310
void verify() const
Verify that the entire cycle tree well-formed.
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:111
static PreservedAnalyses all()
Construct a special preserved set that preserves all passes.
Definition: Analysis.h:117
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:28
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)