mini-llvm
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
Br.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 <unordered_set>
8
#include <utility>
9
10
#include "
mini-llvm/ir/BasicBlock.h
"
11
#include "
mini-llvm/ir/Instruction/Terminator.h
"
12
#include "
mini-llvm/ir/InstructionVisitor.h
"
13
#include "
mini-llvm/ir/Type.h
"
14
#include "
mini-llvm/ir/Type/Void.h
"
15
#include "
mini-llvm/ir/Use.h
"
16
#include "
mini-llvm/ir/Value.h
"
17
#include "
mini-llvm/utils/Compiler.h
"
18
19
namespace
mini_llvm::ir
{
20
21
class
MINI_LLVM_EXPORT
Br
final :
public
Terminator
{
22
public
:
23
explicit
Br
(std::weak_ptr<BasicBlock>
dest
) : dest_(this, std::move(
dest
)) {}
24
25
template
<
typename
Self>
26
auto
&
dest
(
this
Self &&self) {
27
return
self.dest_;
28
}
29
30
std::unordered_set<BasicBlock *>
successors
()
const override
{
31
return
{&*
dest
()};
32
}
33
34
std::unordered_set<const UseBase *>
operands
()
const override
{
35
return
{&
dest
()};
36
}
37
38
void
accept
(
InstructionVisitor
&visitor)
override
{
39
visitor.
visitBr
(*
this
);
40
}
41
42
void
accept
(
InstructionVisitor
&visitor)
const override
{
43
visitor.
visitBr
(*
this
);
44
}
45
46
std::unique_ptr<Type>
type
()
const override
{
47
return
std::make_unique<Void>();
48
}
49
50
std::string
format
()
const override
;
51
std::unique_ptr<Value>
clone
()
const override
;
52
53
private
:
54
Use<BasicBlock>
dest_;
55
};
56
57
}
// namespace mini_llvm::ir
Compiler.h
MINI_LLVM_EXPORT
#define MINI_LLVM_EXPORT
Definition
Compiler.h:17
Type.h
Use.h
Value.h
Void.h
mini_llvm::ir::Br::type
std::unique_ptr< Type > type() const override
Definition
Br.h:46
mini_llvm::ir::Br::format
std::string format() const override
mini_llvm::ir::Br::operands
std::unordered_set< const UseBase * > operands() const override
Definition
Br.h:34
mini_llvm::ir::Br::accept
void accept(InstructionVisitor &visitor) override
Definition
Br.h:38
mini_llvm::ir::Br::Br
Br(std::weak_ptr< BasicBlock > dest)
Definition
Br.h:23
mini_llvm::ir::Br::clone
std::unique_ptr< Value > clone() const override
mini_llvm::ir::Br::accept
void accept(InstructionVisitor &visitor) const override
Definition
Br.h:42
mini_llvm::ir::Br::successors
std::unordered_set< BasicBlock * > successors() const override
Definition
Br.h:30
mini_llvm::ir::Br::dest
auto & dest(this Self &&self)
Definition
Br.h:26
mini_llvm::ir::InstructionVisitor
Definition
InstructionVisitor.h:58
mini_llvm::ir::InstructionVisitor::visitBr
virtual void visitBr(Br &I)
Definition
InstructionVisitor.h:75
mini_llvm::ir::Terminator
Definition
Terminator.h:13
mini_llvm::ir::Use
Definition
Use.h:44
BasicBlock.h
InstructionVisitor.h
Terminator.h
mini_llvm::ir
Definition
Argument.h:13
include
mini-llvm
ir
Instruction
Br.h
Generated by
1.17.0