diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-11 17:37:42 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-11 17:37:42 +0800 |
| commit | 6a7b083f322f4ac47e58cbf9d4d5fd4d1f6fecd0 (patch) | |
| tree | f363c502f0e2b9cda2f12928049275a433db6ad4 /backend/include/rcc/CodeGen/MachineMemOperand.h | |
| parent | adcf8c9b1bd1b47e00bf859693112cea1f7e8c9f (diff) | |
| download | rcc-project-6a7b083f322f4ac47e58cbf9d4d5fd4d1f6fecd0.tar.gz rcc-project-6a7b083f322f4ac47e58cbf9d4d5fd4d1f6fecd0.tar.xz | |
[MIR] Accept fixed-baseline LLVM syntax
Diffstat (limited to 'backend/include/rcc/CodeGen/MachineMemOperand.h')
| -rw-r--r-- | backend/include/rcc/CodeGen/MachineMemOperand.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/backend/include/rcc/CodeGen/MachineMemOperand.h b/backend/include/rcc/CodeGen/MachineMemOperand.h index a9e19a6..c5c1357 100644 --- a/backend/include/rcc/CodeGen/MachineMemOperand.h +++ b/backend/include/rcc/CodeGen/MachineMemOperand.h @@ -3,6 +3,7 @@ #ifndef RCC_CODEGEN_MACHINEMEMOPERAND_H #define RCC_CODEGEN_MACHINEMEMOPERAND_H +#include "rcc/CodeGen/GenericConstant.h" #include "rcc/CodeGen/LowLevelType.h" #include "rcc/CodeGen/MachineIRTypes.h" #include "rcc/CodeGen/MachineMetadata.h" @@ -140,6 +141,7 @@ public: GlobalSymbol, ExternalSymbol, IRValue, + IRConstant, Stack, GOT, ConstantPoolPseudo, @@ -157,6 +159,7 @@ public: [[nodiscard]] static MemoryBase globalSymbol(std::string Name); [[nodiscard]] static MemoryBase externalSymbol(std::string Name); [[nodiscard]] static MemoryBase irValue(std::string Name); + [[nodiscard]] static Expected<MemoryBase> irConstant(GenericConstantData Constant); [[nodiscard]] static MemoryBase stack(); [[nodiscard]] static MemoryBase got(); [[nodiscard]] static MemoryBase constantPoolPseudo(); @@ -173,12 +176,13 @@ public: [[nodiscard]] std::optional<ConstantPoolIndex> constantPoolIndex() const noexcept; [[nodiscard]] std::optional<JumpTableIndex> jumpTableIndex() const noexcept; [[nodiscard]] std::optional<std::string_view> symbolName() const noexcept; + [[nodiscard]] const GenericConstantData *constantValue() const noexcept; friend bool operator==(const MemoryBase &Left, const MemoryBase &Right) = default; private: - using Storage = - std::variant<std::monostate, FrameIndex, ConstantPoolIndex, JumpTableIndex, std::string>; + using Storage = std::variant<std::monostate, FrameIndex, ConstantPoolIndex, JumpTableIndex, + std::string, GenericConstantData>; MemoryBase(Kind BaseKind, Storage Value) : BaseKind(BaseKind), Value(std::move(Value)) {} @@ -193,6 +197,7 @@ struct MachineMemOperandDesc final { AtomicOrdering FailureOrdering = AtomicOrdering::NotAtomic; SyncScopeID SyncScope; MemorySize Size; + std::optional<LLT> MemoryType; Alignment Align; std::optional<Alignment> BaseAlign; std::uint32_t AddressSpace = 0; |
