From 6a7b083f322f4ac47e58cbf9d4d5fd4d1f6fecd0 Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Tue, 11 Aug 2026 17:37:42 +0800 Subject: [MIR] Accept fixed-baseline LLVM syntax --- backend/include/rcc/CodeGen/MachineMemOperand.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'backend/include/rcc/CodeGen/MachineMemOperand.h') 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 irConstant(GenericConstantData Constant); [[nodiscard]] static MemoryBase stack(); [[nodiscard]] static MemoryBase got(); [[nodiscard]] static MemoryBase constantPoolPseudo(); @@ -173,12 +176,13 @@ public: [[nodiscard]] std::optional constantPoolIndex() const noexcept; [[nodiscard]] std::optional jumpTableIndex() const noexcept; [[nodiscard]] std::optional symbolName() const noexcept; + [[nodiscard]] const GenericConstantData *constantValue() const noexcept; friend bool operator==(const MemoryBase &Left, const MemoryBase &Right) = default; private: - using Storage = - std::variant; + using Storage = std::variant; 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 MemoryType; Alignment Align; std::optional BaseAlign; std::uint32_t AddressSpace = 0; -- cgit v1.2.3