mini-llvm
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
LoopTreeAnalysis.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: MIT
2
3
#pragma once
4
5
#include <memory>
6
#include <unordered_set>
7
#include <vector>
8
9
#include "
mini-llvm/ir/Function.h
"
10
#include "
mini-llvm/opt/ir/FunctionAnalysis.h
"
11
#include "
mini-llvm/utils/Compiler.h
"
12
13
namespace
mini_llvm::ir
{
14
15
struct
Loop
{
16
std::unordered_set<const BasicBlock *>
blocks
;
17
const
BasicBlock
*
header
;
18
};
19
20
struct
LTNode
{
21
const
Loop
*
loop
;
22
const
LTNode
*
parent
;
23
std::vector<const LTNode *>
children
;
24
};
25
26
class
MINI_LLVM_EXPORT
LoopTreeAnalysis
final :
public
FunctionAnalysis
{
27
public
:
28
LoopTreeAnalysis
();
29
~LoopTreeAnalysis
()
override
;
30
void
runOnFunction
(
const
Function
&F)
override
;
31
const
std::vector<Loop> &
loops
()
const
;
32
const
LTNode
*
node
(
const
Loop
&loop)
const
;
33
const
LTNode
*
rootNode
()
const
;
34
35
private
:
36
class
Impl;
37
38
std::unique_ptr<Impl> impl_;
39
};
40
41
}
// namespace mini_llvm::ir
Compiler.h
MINI_LLVM_EXPORT
#define MINI_LLVM_EXPORT
Definition
Compiler.h:17
mini_llvm::ir::BasicBlock
Definition
BasicBlock.h:28
mini_llvm::ir::FunctionAnalysis::FunctionAnalysis
FunctionAnalysis()=default
mini_llvm::ir::Function
Definition
Function.h:34
mini_llvm::ir::LoopTreeAnalysis::~LoopTreeAnalysis
~LoopTreeAnalysis() override
mini_llvm::ir::LoopTreeAnalysis::node
const LTNode * node(const Loop &loop) const
mini_llvm::ir::LoopTreeAnalysis::runOnFunction
void runOnFunction(const Function &F) override
mini_llvm::ir::LoopTreeAnalysis::LoopTreeAnalysis
LoopTreeAnalysis()
mini_llvm::ir::LoopTreeAnalysis::loops
const std::vector< Loop > & loops() const
mini_llvm::ir::LoopTreeAnalysis::rootNode
const LTNode * rootNode() const
FunctionAnalysis.h
Function.h
mini_llvm::ir
Definition
Argument.h:13
mini_llvm::ir::LTNode
Definition
LoopTreeAnalysis.h:20
mini_llvm::ir::LTNode::loop
const Loop * loop
Definition
LoopTreeAnalysis.h:21
mini_llvm::ir::LTNode::children
std::vector< const LTNode * > children
Definition
LoopTreeAnalysis.h:23
mini_llvm::ir::LTNode::parent
const LTNode * parent
Definition
LoopTreeAnalysis.h:22
mini_llvm::ir::Loop
Definition
LoopTreeAnalysis.h:15
mini_llvm::ir::Loop::blocks
std::unordered_set< const BasicBlock * > blocks
Definition
LoopTreeAnalysis.h:16
mini_llvm::ir::Loop::header
const BasicBlock * header
Definition
LoopTreeAnalysis.h:17
include
mini-llvm
opt
ir
passes
LoopTreeAnalysis.h
Generated by
1.17.0