mini-llvm 0.1.0
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 <memory>
6#include <string>
7#include <utility>
8
13
14namespace mini_llvm::mir {
15
17public:
18 GlobalVar(std::string name,
20 bool isConstant,
21 int alignment,
22 std::unique_ptr<Constant> initializer)
23 : name_(std::move(name)),
24 linkage_(linkage),
25 isConstant_(isConstant),
26 alignment_(alignment),
27 initializer_(std::move(initializer)) {}
28
30 : name_(std::move(name)),
31 linkage_(linkage),
32 isConstant_(false),
33 alignment_(0),
34 initializer_(nullptr) {}
35
36 GlobalVar(const GlobalVar &&) = delete;
37 GlobalVar(GlobalVar &&) = delete;
38 GlobalVar &operator=(const GlobalVar &&) = delete;
40
41 std::string name() const override {
42 return name_;
43 }
44
45 void setName(std::string name) {
46 name_ = std::move(name);
47 }
48
49 Linkage linkage() const override {
50 return linkage_;
51 }
52
54 linkage_ = linkage;
55 }
56
57 bool isConstant() const {
58 return isConstant_;
59 }
60
62 isConstant_ = isConstant;
63 }
64
65 int alignment() const {
66 return alignment_;
67 }
68
70 alignment_ = alignment;
71 }
72
73 bool isDeclaration() const {
74 return !initializer_;
75 }
76
78 return *initializer_;
79 }
80
81 const Constant &initializer() const {
82 return *initializer_;
83 }
84
85 void setInitializer(std::unique_ptr<Constant> initializer) {
86 initializer_ = std::move(initializer);
87 }
88
89 std::string format() const override;
90
91private:
92 std::string name_;
93 Linkage linkage_;
94 bool isConstant_;
95 int alignment_;
96 std::unique_ptr<Constant> initializer_;
97};
98
99} // namespace mini_llvm::mir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition Constant.h:14
GlobalVar(std::string name, Linkage linkage, bool isConstant, int alignment, std::unique_ptr< Constant > initializer)
Definition GlobalVar.h:18
std::string format() const override
void setAlignment(int alignment)
Definition GlobalVar.h:69
Linkage linkage() const override
Definition GlobalVar.h:49
GlobalVar(const GlobalVar &&)=delete
void setName(std::string name)
Definition GlobalVar.h:45
int alignment() const
Definition GlobalVar.h:65
Constant & initializer()
Definition GlobalVar.h:77
bool isDeclaration() const
Definition GlobalVar.h:73
GlobalVar & operator=(GlobalVar &&)=delete
std::string name() const override
Definition GlobalVar.h:41
const Constant & initializer() const
Definition GlobalVar.h:81
void setLinkage(Linkage linkage)
Definition GlobalVar.h:53
void setInitializer(std::unique_ptr< Constant > initializer)
Definition GlobalVar.h:85
GlobalVar & operator=(const GlobalVar &&)=delete
void setConstant(bool isConstant)
Definition GlobalVar.h:61
GlobalVar(GlobalVar &&)=delete
GlobalVar(std::string name, Linkage linkage)
Definition GlobalVar.h:29
bool isConstant() const
Definition GlobalVar.h:57
Definition BasicBlock.h:22
Linkage
Definition Linkage.h:7