mini-llvm 0.1.0
Loading...
Searching...
No Matches
PtrConstant.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <cstdint>
6#include <string>
7#include <utility>
8
13
14namespace mini_llvm::mir {
15
17public:
18 PtrConstant(int ptrSize, std::pair<GlobalValue *, int64_t> value)
19 : ptrSize_(ptrSize), value_(value) {}
20
21 PtrConstant(int ptrSize, GlobalValue *basePtr, int64_t offset)
22 : ptrSize_(ptrSize), value_(basePtr, offset) {}
23
24 int ptrSize() const {
25 return ptrSize_;
26 }
27
28 std::pair<GlobalValue *, int64_t> value() const {
29 return value_;
30 }
31
32 void setValue(std::pair<GlobalValue *, int64_t> value) {
33 value_ = value;
34 }
35
36 void setValue(GlobalValue *basePtr, int64_t offset) {
37 value_ = {basePtr, offset};
38 }
39
40 int size() const override {
41 return ptrSize_;
42 }
43
44 std::string format() const override;
45
46 void accept(ConstantVisitor &visitor) override {
47 visitor.visitPtrConstant(*this);
48 }
49
50 void accept(ConstantVisitor &visitor) const override {
51 visitor.visitPtrConstant(*this);
52 }
53
54private:
55 int ptrSize_;
56 std::pair<GlobalValue *, int64_t> value_;
57};
58
59} // namespace mini_llvm::mir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition ConstantVisitor.h:24
virtual void visitPtrConstant(PtrConstant &C)
Definition ConstantVisitor.h:45
Definition GlobalValue.h:15
std::string format() const override
void setValue(std::pair< GlobalValue *, int64_t > value)
Definition PtrConstant.h:32
void setValue(GlobalValue *basePtr, int64_t offset)
Definition PtrConstant.h:36
void accept(ConstantVisitor &visitor) override
Definition PtrConstant.h:46
void accept(ConstantVisitor &visitor) const override
Definition PtrConstant.h:50
int size() const override
Definition PtrConstant.h:40
std::pair< GlobalValue *, int64_t > value() const
Definition PtrConstant.h:28
PtrConstant(int ptrSize, std::pair< GlobalValue *, int64_t > value)
Definition PtrConstant.h:18
int ptrSize() const
Definition PtrConstant.h:24
PtrConstant(int ptrSize, GlobalValue *basePtr, int64_t offset)
Definition PtrConstant.h:21
Definition BasicBlock.h:22