mini-llvm
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
BasicBlockBuilder.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: MIT
2
3
#pragma once
4
5
#include <concepts>
6
#include <memory>
7
#include <utility>
8
9
#include "
mini-llvm/mir/BasicBlock.h
"
10
#include "
mini-llvm/mir/Instruction.h
"
11
12
namespace
mini_llvm::mir
{
13
14
class
BasicBlockBuilder
{
15
public
:
16
BasicBlockBuilder
() =
default
;
17
18
BasicBlockBuilder
(
BasicBlock
*block,
BasicBlock::const_iterator
pos)
19
: block_(block), pos_(pos) {}
20
21
explicit
BasicBlockBuilder
(
BasicBlock
*block)
22
: block_(block), pos_(block->end()) {}
23
24
void
setPos
(
BasicBlock
*block,
BasicBlock::const_iterator
pos) {
25
block_ = block;
26
pos_ = pos;
27
}
28
29
void
setPos
(
BasicBlock
*block) {
30
setPos
(block, block->
end
());
31
}
32
33
template
<
typename
T>
34
requires
std::derived_from<T, Instruction>
35
T &
add
(std::unique_ptr<T> I)
const
{
36
return
block_->add(pos_, std::move(I));
37
}
38
39
private
:
40
BasicBlock
*block_{};
41
BasicBlock::const_iterator
pos_{};
42
};
43
44
}
// namespace mini_llvm::mir
mini_llvm::mir::BasicBlockBuilder::BasicBlockBuilder
BasicBlockBuilder()=default
mini_llvm::mir::BasicBlockBuilder::BasicBlockBuilder
BasicBlockBuilder(BasicBlock *block, BasicBlock::const_iterator pos)
Definition
BasicBlockBuilder.h:18
mini_llvm::mir::BasicBlockBuilder::add
T & add(std::unique_ptr< T > I) const
Definition
BasicBlockBuilder.h:35
mini_llvm::mir::BasicBlockBuilder::BasicBlockBuilder
BasicBlockBuilder(BasicBlock *block)
Definition
BasicBlockBuilder.h:21
mini_llvm::mir::BasicBlockBuilder::setPos
void setPos(BasicBlock *block, BasicBlock::const_iterator pos)
Definition
BasicBlockBuilder.h:24
mini_llvm::mir::BasicBlockBuilder::setPos
void setPos(BasicBlock *block)
Definition
BasicBlockBuilder.h:29
mini_llvm::mir::BasicBlock
Definition
BasicBlock.h:24
mini_llvm::mir::BasicBlock::end
iterator end()
Definition
BasicBlock.h:59
mini_llvm::mir::BasicBlock::const_iterator
IndirectIterator< InstructionList::const_iterator, const Instruction > const_iterator
Definition
BasicBlock.h:29
BasicBlock.h
Instruction.h
mini_llvm::mir
Definition
BasicBlock.h:22
include
mini-llvm
mir
BasicBlockBuilder.h
Generated by
1.17.0