diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-24 16:37:25 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-24 16:37:25 +0800 |
| commit | 540c73a2f450af3d0aec6e039fab054471efdbb1 (patch) | |
| tree | 9b260322eaeeac8b8741a30a273f7d407b683e5e /backend/include/rcc | |
| parent | 936ac5647f82def050e6654d44d24a88906f4d7a (diff) | |
| download | rcc-project-540c73a2f450af3d0aec6e039fab054471efdbb1.tar.gz rcc-project-540c73a2f450af3d0aec6e039fab054471efdbb1.tar.xz | |
[RISCV] Match LLVM frame lowering semantics
Diffstat (limited to 'backend/include/rcc')
| -rw-r--r-- | backend/include/rcc/Target/RISCV/RISCVSubtarget.h | 14 |
1 files changed, 13 insertions, 1 deletions
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<RISCVABI> parseRISCVABI(std::string_view Name); + class RISCVSubtargetFeatures final { public: [[nodiscard]] static Expected<RISCVSubtargetFeatures> @@ -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<TargetCallLowering> CallLoweringInfo; mutable std::unique_ptr<InstructionSelector> InstSelector; mutable std::unique_ptr<LegalizerInfo> Legalizer; |
