From 540c73a2f450af3d0aec6e039fab054471efdbb1 Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Mon, 24 Aug 2026 16:37:25 +0800 Subject: [RISCV] Match LLVM frame lowering semantics --- backend/include/rcc/Target/RISCV/RISCVSubtarget.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'backend/include/rcc/Target') diff --git a/backend/include/rcc/Target/RISCV/RISCVSubtarget.h b/backend/include/rcc/Target/RISCV/RISCVSubtarget.h index c8a4298..52b99af 100644 --- a/backend/include/rcc/Target/RISCV/RISCVSubtarget.h +++ b/backend/include/rcc/Target/RISCV/RISCVSubtarget.h @@ -71,6 +71,13 @@ enum class RISCVSubtargetOption : std::uint8_t { Count, }; +enum class RISCVABI : std::uint8_t { + LP64, + LP64D, +}; + +[[nodiscard]] Expected parseRISCVABI(std::string_view Name); + class RISCVSubtargetFeatures final { public: [[nodiscard]] static Expected @@ -97,7 +104,7 @@ class RISCVSubtarget final { public: explicit RISCVSubtarget(RISCVSubtargetFeatures Features, RelocationModel Relocation = RelocationModel::Static, - CodeModel Code = CodeModel::Small); + CodeModel Code = CodeModel::Small, RISCVABI ABI = RISCVABI::LP64D); RISCVSubtarget(const RISCVSubtarget &) = delete; RISCVSubtarget &operator=(const RISCVSubtarget &) = delete; RISCVSubtarget(RISCVSubtarget &&) = delete; @@ -116,6 +123,10 @@ public: return Code; } + [[nodiscard]] RISCVABI targetABI() const noexcept { + return ABI; + } + [[nodiscard]] const TargetCallLowering *getCallLowering() const; [[nodiscard]] InstructionSelector *getInstructionSelector() const; [[nodiscard]] const LegalizerInfo *getLegalizerInfo() const; @@ -126,6 +137,7 @@ private: RISCVSubtargetFeatures Features; RelocationModel Relocation; CodeModel Code; + RISCVABI ABI; mutable std::unique_ptr CallLoweringInfo; mutable std::unique_ptr InstSelector; mutable std::unique_ptr Legalizer; -- cgit v1.2.3