mini-llvm 0.1.0
Loading...
Searching...
No Matches
DominatorTreeAnalysis.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <memory>
6#include <string>
7#include <vector>
8
13
14namespace mini_llvm::ir {
15
16struct DTNode {
18 const DTNode *parent;
19 std::vector<const DTNode *> children;
20};
21
22MINI_LLVM_EXPORT std::string toDot(const DTNode *root);
23
25public:
28 void runOnFunction(const Function &F) override;
29 const DTNode *node(const BasicBlock &v) const;
30 bool dominates(const BasicBlock &u, const BasicBlock &v) const;
31 bool dominates(const Instruction &u, const Instruction &v) const;
32
33private:
34 class Impl;
35
36 std::unique_ptr<Impl> impl_;
37};
38
39} // namespace mini_llvm::ir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition BasicBlock.h:28
bool dominates(const BasicBlock &u, const BasicBlock &v) const
void runOnFunction(const Function &F) override
bool dominates(const Instruction &u, const Instruction &v) const
const DTNode * node(const BasicBlock &v) const
Definition Function.h:34
Definition Instruction.h:22
Definition Argument.h:13
MINI_LLVM_EXPORT std::string toDot(const Function &F)
Definition DominatorTreeAnalysis.h:16
const BasicBlock * block
Definition DominatorTreeAnalysis.h:17
const DTNode * parent
Definition DominatorTreeAnalysis.h:18
std::vector< const DTNode * > children
Definition DominatorTreeAnalysis.h:19