mini-llvm 0.1.0
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
12
13namespace mini_llvm::ir {
14
15struct Loop {
16 std::unordered_set<const BasicBlock *> blocks;
18};
19
20struct LTNode {
21 const Loop *loop;
22 const LTNode *parent;
23 std::vector<const LTNode *> children;
24};
25
27public:
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
35private:
36 class Impl;
37
38 std::unique_ptr<Impl> impl_;
39};
40
41} // namespace mini_llvm::ir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition BasicBlock.h:28
Definition Function.h:34
const LTNode * node(const Loop &loop) const
void runOnFunction(const Function &F) override
const std::vector< Loop > & loops() const
const LTNode * rootNode() const
Definition Argument.h:13
Definition LoopTreeAnalysis.h:20
const Loop * loop
Definition LoopTreeAnalysis.h:21
std::vector< const LTNode * > children
Definition LoopTreeAnalysis.h:23
const LTNode * parent
Definition LoopTreeAnalysis.h:22
Definition LoopTreeAnalysis.h:15
std::unordered_set< const BasicBlock * > blocks
Definition LoopTreeAnalysis.h:16
const BasicBlock * header
Definition LoopTreeAnalysis.h:17