1
Fork 0

Rollup merge of #138608 - heiher:issue-116344, r=RalfJung

rustc_target: Add target feature constraints for LoongArch

Part of https://github.com/rust-lang/rust/issues/116344

r? `@RalfJung`
This commit is contained in:
Matthias Krüger 2025-03-17 22:49:07 +01:00 committed by GitHub
commit aa53a72dff
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -923,6 +923,28 @@ impl Target {
_ => unreachable!(), _ => unreachable!(),
} }
} }
"loongarch64" => {
// LoongArch handles ABI in a very sane way, being fully explicit via `llvm_abiname`
// about what the intended ABI is.
match &*self.llvm_abiname {
"ilp32d" | "lp64d" => {
// Requires d (which implies f), incompatible with nothing.
FeatureConstraints { required: &["d"], incompatible: &[] }
}
"ilp32f" | "lp64f" => {
// Requires f, incompatible with nothing.
FeatureConstraints { required: &["f"], incompatible: &[] }
}
"ilp32s" | "lp64s" => {
// The soft-float ABI does not require any features and is also not
// incompatible with any features. Rust targets explicitly specify the
// LLVM ABI names, which allows for enabling hard-float support even on
// soft-float targets, and ensures that the ABI behavior is as expected.
NOTHING
}
_ => unreachable!(),
}
}
_ => NOTHING, _ => NOTHING,
} }
} }