From 38626ed37c9ea78c76c12dae4806b750881fd910 Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Tue, 11 Aug 2026 20:26:56 +0800 Subject: [RISCV] Add LP64 calling-convention facts --- backend/lib/Target/RISCV/RISCVTarget.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'backend/lib/Target/RISCV/RISCVTarget.cpp') diff --git a/backend/lib/Target/RISCV/RISCVTarget.cpp b/backend/lib/Target/RISCV/RISCVTarget.cpp index aabce94..299b5ab 100644 --- a/backend/lib/Target/RISCV/RISCVTarget.cpp +++ b/backend/lib/Target/RISCV/RISCVTarget.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -121,12 +122,17 @@ Expected createTargetDescription() { std::move(MIRText)); } -std::shared_ptr createCallPreservedMask() { +std::shared_ptr createCallPreservedMask(CallingConvention Convention) { + const CallingConventionInfo *Info = callingConvention(Convention); + if (Info == nullptr) + return {}; TargetMIRTextInfoDesc Description; appendGeneratedMIRTextInfo(Description); configureFunctionInfoMIRSchema(Description); - assert(!Description.RegisterMasks.empty()); - return Description.RegisterMasks.front().Mask; + const auto Mask = std::ranges::find(Description.RegisterMasks, Info->PreservedMaskName, + &MIRRegisterMaskDesc::Name); + return Mask == Description.RegisterMasks.end() ? std::shared_ptr{} + : Mask->Mask; } std::span schedulingClasses() noexcept { -- cgit v1.2.3