about summary refs log tree commit diff
path: root/compiler/rustc_target/src/spec/base
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2025-01-29 12:16:51 +0100
committerRalf Jung <post@ralfj.de>2025-02-14 19:47:52 +0100
commit2eff2155e5467c42f43143f282dd96f9ccb7bf08 (patch)
tree56382ec9b9d1093c345ea1d0178df58e7c027661 /compiler/rustc_target/src/spec/base
parentbdc97d104696f6abccea657f76401e282fc6ca85 (diff)
downloadrust-2eff2155e5467c42f43143f282dd96f9ccb7bf08.tar.gz
rust-2eff2155e5467c42f43143f282dd96f9ccb7bf08.zip
add x86-sse2 (32bit) ABI that requires SSE2 target feature
Diffstat (limited to 'compiler/rustc_target/src/spec/base')
-rw-r--r--compiler/rustc_target/src/spec/base/apple/mod.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/compiler/rustc_target/src/spec/base/apple/mod.rs b/compiler/rustc_target/src/spec/base/apple/mod.rs
index 497994a5998..1b56143545f 100644
--- a/compiler/rustc_target/src/spec/base/apple/mod.rs
+++ b/compiler/rustc_target/src/spec/base/apple/mod.rs
@@ -2,8 +2,8 @@ use std::borrow::Cow;
 use std::env;
 
 use crate::spec::{
-    Cc, DebuginfoKind, FloatAbi, FramePointer, LinkerFlavor, Lld, SplitDebuginfo, StackProbeType,
-    StaticCow, TargetOptions, cvs,
+    Cc, DebuginfoKind, FloatAbi, FramePointer, LinkerFlavor, Lld, RustcAbi, SplitDebuginfo,
+    StackProbeType, StaticCow, TargetOptions, cvs,
 };
 
 #[cfg(test)]
@@ -103,7 +103,7 @@ pub(crate) fn base(
     arch: Arch,
     abi: TargetAbi,
 ) -> (TargetOptions, StaticCow<str>, StaticCow<str>) {
-    let opts = TargetOptions {
+    let mut opts = TargetOptions {
         abi: abi.target_abi().into(),
         llvm_floatabi: Some(FloatAbi::Hard),
         os: os.into(),
@@ -154,6 +154,10 @@ pub(crate) fn base(
 
         ..Default::default()
     };
+    if matches!(arch, Arch::I386 | Arch::I686) {
+        // All Apple x86-32 targets have SSE2.
+        opts.rustc_abi = Some(RustcAbi::X86Sse2);
+    }
     (opts, unversioned_llvm_target(os, arch, abi), arch.target_arch())
 }