aboutsummaryrefslogtreecommitdiff
path: root/backend/lib
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-11 19:42:45 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-11 19:42:45 +0800
commit2271b7b102ae0e5f2a1246bf6e615f3ac128c8bd (patch)
tree4cc3167be793a798b21bf46b9e84e2584824e402 /backend/lib
parentb7716aba458fb3d49742f7a3c169deee7345396e (diff)
downloadrcc-project-2271b7b102ae0e5f2a1246bf6e615f3ac128c8bd.tar.gz
rcc-project-2271b7b102ae0e5f2a1246bf6e615f3ac128c8bd.tar.xz
[RISCV] Accept generic scalars in call lowering
Diffstat (limited to 'backend/lib')
-rw-r--r--backend/lib/Target/RISCV/RISCVCallLowering.cpp5
1 files changed, 2 insertions, 3 deletions
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");