LLVM 22.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
24
25AnalysisKey CycleAnalysis::Key;
26
28
31 OS << "CycleInfo for function: " << F.getName() << "\n";
33
35}
36
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
56
57INITIALIZE_PASS_BEGIN(CycleInfoWrapperPass, "cycles", "Cycle Info Analysis",
58 true, true)
59INITIALIZE_PASS_END(CycleInfoWrapperPass, "cycles", "Cycle Info Analysis", true,
60 true)
61
63 AU.setPreservesAll();
64}
65
67 CI.clear();
68
69 F = &Func;
70 CI.compute(Func);
71 return false;
72}
73
75 OS << "CycleInfo for function: " << F->getName() << "\n";
76 CI.print(OS);
77}
78
80 CI.clear();
81 F = nullptr;
82}
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:44
#define INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis)
Definition PassSupport.h:39
PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)
Get the result of an analysis pass for a given IR unit.
Represent the analysis usage information of a pass.
Analysis pass which computes a CycleInfo.
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.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
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(char &pid)
Definition Pass.h:316
void verify() const
Verify that the entire cycle tree well-formed.
void compute(FunctionT &F)
Compute the cycle info for a function.
A Module instance is used to store all the information related to an LLVM module.
Definition Module.h:67
A set of analyses that are preserved following a run of a transformation pass.
Definition Analysis.h:112
static PreservedAnalyses all()
Construct a special preserved set that preserves all passes.
Definition Analysis.h:118
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition raw_ostream.h:53
This is an optimization pass for GlobalISel generic memory operations.
Printable print(const GCNRegPressure &RP, const GCNSubtarget *ST=nullptr, unsigned DynamicVGPRBlockSize=0)
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
GenericCycleInfo< SSAContext > CycleInfo
Definition CycleInfo.h:23
A special type used by analysis passes to provide an address that identifies that particular analysis...
Definition Analysis.h:29
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)