From d62f022c92fcc3ebe2269273628943a0089683fd Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Thu, 13 Aug 2026 06:19:30 +0800 Subject: [CodeGen] Align MIR parser and printer ownership --- backend/include/rcc/MIR/MIParser.h | 107 ------------------------------------- 1 file changed, 107 deletions(-) delete mode 100644 backend/include/rcc/MIR/MIParser.h (limited to 'backend/include/rcc/MIR/MIParser.h') diff --git a/backend/include/rcc/MIR/MIParser.h b/backend/include/rcc/MIR/MIParser.h deleted file mode 100644 index b660f47..0000000 --- a/backend/include/rcc/MIR/MIParser.h +++ /dev/null @@ -1,107 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef RCC_MIR_MIPARSER_H -#define RCC_MIR_MIPARSER_H - -#include "rcc/CodeGen/MachineIRTypes.h" -#include "rcc/CodeGen/MachineMetadata.h" -#include "rcc/CodeGen/Register.h" -#include "rcc/Support/Error.h" -#include "rcc/Support/TextDiagnostic.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace rcc { - -class MachineFunction; -class TargetDescription; - -namespace mir { - -struct MIVirtualRegisterSlot final { - std::uint32_t TextID = 0; - Register Reg; -}; - -struct MIFrameObjectSlot final { - std::uint32_t TextID = 0; - FrameIndex Index; - std::optional Name; -}; - -struct MIConstantPoolSlot final { - std::uint32_t TextID = 0; - ConstantPoolIndex Index; -}; - -struct MIJumpTableSlot final { - std::uint32_t TextID = 0; - JumpTableIndex Index; -}; - -struct MIMetadataSlot final { - std::uint32_t TextID = 0; - MachineMetadataReference Reference; -}; - -struct MISyncScopeSlot final { - std::string Name; - SyncScopeID ID; -}; - -struct MIParserContext final { - std::vector VirtualRegisters; - std::vector StackObjects; - std::vector FixedStackObjects; - std::vector ConstantPoolItems; - std::vector JumpTables; - std::vector Metadata; - std::vector SyncScopes; - std::function HasIRBlock; - std::function(std::string_view)> InternSyncScope; - std::function(std::uint32_t)> PointerSizeInBits; -}; - -struct MIParserOptions final { - std::size_t MaximumTokens = std::size_t{1} << 24U; - std::size_t MaximumTokenLength = std::size_t{1} << 24U; - std::size_t MaximumBlocks = std::size_t{1} << 20U; - std::size_t MaximumInstructions = std::size_t{1} << 24U; - std::size_t MaximumOperandsPerInstruction = std::size_t{1} << 20U; - std::size_t MaximumMemoryOperandsPerInstruction = std::size_t{1} << 20U; - bool VerifyAfterParse = true; -}; - -class MIParser final { -public: - MIParser(MachineFunction &Function, const TargetDescription &Target, std::string SourceName, - std::string SourceText, MIParserContext Context = {}, MIParserOptions Options = {}); - MIParser(const MIParser &) = delete; - MIParser &operator=(const MIParser &) = delete; - MIParser(MIParser &&) noexcept; - MIParser &operator=(MIParser &&) noexcept; - ~MIParser(); - - [[nodiscard]] Expected parse(); - - [[nodiscard]] const TextSource &source() const noexcept; - [[nodiscard]] std::span diagnostics() const noexcept; - [[nodiscard]] bool failed() const noexcept; - -private: - class Impl; - std::unique_ptr Implementation; -}; - -} // namespace mir -} // namespace rcc - -#endif // RCC_MIR_MIPARSER_H -- cgit v1.2.3