mini-llvm
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
GlobalVar.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: MIT
2
3
#pragma once
4
5
#include <cassert>
6
#include <memory>
7
#include <string>
8
#include <typeinfo>
9
#include <variant>
10
11
#include "
mini-llvm/common/Linkage.h
"
12
#include "
mini-llvm/ir/Constant.h
"
13
#include "
mini-llvm/ir/ConstantVisitor.h
"
14
#include "
mini-llvm/ir/GlobalValue.h
"
15
#include "
mini-llvm/ir/Type.h
"
16
#include "
mini-llvm/utils/Compiler.h
"
17
18
namespace
mini_llvm::ir
{
19
20
class
MINI_LLVM_EXPORT
GlobalVar
final :
public
GlobalValue
{
21
public
:
22
GlobalVar
(std::unique_ptr<Type>
valueType
,
23
Linkage
linkage
,
24
bool
isConstant
,
25
std::shared_ptr<Constant>
initializer
);
26
27
GlobalVar
(std::unique_ptr<Type>
valueType
,
Linkage
linkage
);
28
29
std::unique_ptr<Type>
valueType
()
const
{
30
return
valueType_->clone();
31
}
32
33
Linkage
linkage
()
const
{
34
return
linkage_;
35
}
36
37
bool
isConstant
()
const
{
38
return
isConstant_;
39
}
40
41
Constant
&
initializer
();
42
const
Constant
&
initializer
()
const
;
43
44
void
setInitializer
(std::shared_ptr<Constant>
initializer
);
45
46
bool
isDeclaration
()
const override
;
47
48
void
accept
(
ConstantVisitor
&visitor)
override
{
49
visitor.
visitGlobalVar
(*
this
);
50
}
51
52
void
accept
(
ConstantVisitor
&visitor)
const override
{
53
visitor.
visitGlobalVar
(*
this
);
54
}
55
56
std::string
format
()
const override
;
57
58
protected
:
59
bool
equals
([[maybe_unused]]
const
Constant
&other)
const override
{
60
assert(
typeid
(*
this
) !=
typeid
(other));
61
return
false
;
62
}
63
64
private
:
65
std::unique_ptr<Type> valueType_;
66
Linkage
linkage_;
67
bool
isConstant_;
68
std::variant<std::monostate, std::shared_ptr<Constant>, std::weak_ptr<Constant>> initializer_;
69
};
70
71
}
// namespace mini_llvm::ir
Compiler.h
MINI_LLVM_EXPORT
#define MINI_LLVM_EXPORT
Definition
Compiler.h:17
Linkage.h
Type.h
mini_llvm::ir::ConstantVisitor
Definition
ConstantVisitor.h:26
mini_llvm::ir::ConstantVisitor::visitGlobalVar
virtual void visitGlobalVar(GlobalVar &C)
Definition
ConstantVisitor.h:42
mini_llvm::ir::Constant
Definition
Constant.h:13
mini_llvm::ir::GlobalValue
Definition
GlobalValue.h:17
mini_llvm::ir::GlobalVar::valueType
std::unique_ptr< Type > valueType() const
Definition
GlobalVar.h:29
mini_llvm::ir::GlobalVar::initializer
const Constant & initializer() const
mini_llvm::ir::GlobalVar::setInitializer
void setInitializer(std::shared_ptr< Constant > initializer)
mini_llvm::ir::GlobalVar::accept
void accept(ConstantVisitor &visitor) const override
Definition
GlobalVar.h:52
mini_llvm::ir::GlobalVar::format
std::string format() const override
mini_llvm::ir::GlobalVar::equals
bool equals(const Constant &other) const override
Definition
GlobalVar.h:59
mini_llvm::ir::GlobalVar::accept
void accept(ConstantVisitor &visitor) override
Definition
GlobalVar.h:48
mini_llvm::ir::GlobalVar::GlobalVar
GlobalVar(std::unique_ptr< Type > valueType, Linkage linkage)
mini_llvm::ir::GlobalVar::isDeclaration
bool isDeclaration() const override
mini_llvm::ir::GlobalVar::linkage
Linkage linkage() const
Definition
GlobalVar.h:33
mini_llvm::ir::GlobalVar::initializer
Constant & initializer()
mini_llvm::ir::GlobalVar::GlobalVar
GlobalVar(std::unique_ptr< Type > valueType, Linkage linkage, bool isConstant, std::shared_ptr< Constant > initializer)
mini_llvm::ir::GlobalVar::isConstant
bool isConstant() const
Definition
GlobalVar.h:37
ConstantVisitor.h
Constant.h
GlobalValue.h
mini_llvm::ir
Definition
Argument.h:13
mini_llvm::Linkage
Linkage
Definition
Linkage.h:7
include
mini-llvm
ir
GlobalVar.h
Generated by
1.17.0