From 2271b7b102ae0e5f2a1246bf6e615f3ac128c8bd Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Tue, 11 Aug 2026 19:42:45 +0800 Subject: [RISCV] Accept generic scalars in call lowering --- backend/lib/Target/RISCV/RISCVCallLowering.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'backend/lib/Target/RISCV') diff --git a/backend/lib/Target/RISCV/RISCVCallLowering.cpp b/backend/lib/Target/RISCV/RISCVCallLowering.cpp index 13cd348..ec794bc 100644 --- a/backend/lib/Target/RISCV/RISCVCallLowering.cpp +++ b/backend/lib/Target/RISCV/RISCVCallLowering.cpp @@ -79,8 +79,7 @@ constexpr std::uint32_t AllowedDirectCallFlags = return makeUnexpected(ErrorCode::InvalidArgument, "LP64D ABI value requires a source or destination register"); } - if (!Value.Type.isValid() || !Value.Type.isScalarValue() || Value.Type.isAnyScalar() || - Value.Type.scalarBitWidth() > 64) { + if (!Value.Type.isValid() || !Value.Type.isScalarValue() || Value.Type.scalarBitWidth() > 64) { return makeUnexpected( ErrorCode::Unsupported, "LP64D accepts explicitly classified integer, pointer, f32, and f64 scalar fragments"); @@ -92,7 +91,7 @@ constexpr std::uint32_t AllowedDirectCallFlags = if (Value.Type.isPointer() && Value.Type.scalarBitWidth() != 64) { return makeUnexpected(ErrorCode::Unsupported, "RV64GC LP64D requires 64-bit machine pointers"); } - if (Value.Type.isInteger() && Value.Type.scalarBitWidth() < 64) { + if ((Value.Type.isInteger() || Value.Type.isAnyScalar()) && Value.Type.scalarBitWidth() < 64) { if (Value.Extension == ABIExtensionKind::None) { return makeUnexpected(ErrorCode::InvalidArgument, "narrow LP64D integer fragments require an explicit extension kind"); -- cgit v1.2.3