diff --git a/compiler/rustc_target/src/spec/base/apple/mod.rs b/compiler/rustc_target/src/spec/base/apple/mod.rs index aa6d1ec7009e7..d68c8e7af065e 100644 --- a/compiler/rustc_target/src/spec/base/apple/mod.rs +++ b/compiler/rustc_target/src/spec/base/apple/mod.rs @@ -11,73 +11,71 @@ use crate::spec::{ #[cfg(test)] mod tests; - use Arch::*; -#[allow(non_camel_case_types)] -#[derive(Copy, Clone, PartialEq)] -pub(crate) enum Arch { - Armv7k, - Armv7s, - Arm64, - Arm64e, - Arm64_32, - I386, - I686, - X86_64, - X86_64h, -} + +use crate::spec::Aarch64Ver::{_32, E, V8A}; +pub(crate) use crate::spec::Arch; +use crate::spec::ArmVer::{V7K, V7S}; +use crate::spec::Ix86::{AppleI386, ClangI686}; +use crate::spec::X86_64Ver::{Haswell, X64}; impl Arch { fn target_name(self) -> &'static str { match self { - Armv7k => "armv7k", - Armv7s => "armv7s", - Arm64 => "arm64", - Arm64e => "arm64e", - Arm64_32 => "arm64_32", - I386 => "i386", - I686 => "i686", - X86_64 => "x86_64", - X86_64h => "x86_64h", + Arm(V7K) => "armv7k", + Arm(V7S) => "armv7s", + Aarch64(V8A) => "arm64", + Aarch64(E) => "arm64e", + Aarch64(_32) => "arm64_32", + X86_32(AppleI386) => "i386", + X86_32(ClangI686) => "i686", + X86_64(Haswell) => "x86_64h", + X86_64(..) => "x86_64", + _ => panic!(), } } pub(crate) fn target_arch(self) -> Cow<'static, str> { Cow::Borrowed(match self { - Armv7k | Armv7s => "arm", - Arm64 | Arm64e | Arm64_32 => "aarch64", - I386 | I686 => "x86", - X86_64 | X86_64h => "x86_64", + Arm(..) => "arm", + Aarch64(..) => "aarch64", + X86_32(..) => "x86", + X86_64(..) => "x86_64", }) } fn target_cpu(self, abi: TargetAbi) -> &'static str { match self { - Armv7k => "cortex-a8", - Armv7s => "swift", // iOS 10 is only supported on iPhone 5 or higher. - Arm64 => match abi { + Arm(V7K) => "cortex-a8", + Arm(V7S) => "swift", + Aarch64(V8A) => match abi { TargetAbi::Normal => "apple-a7", TargetAbi::Simulator => "apple-a12", TargetAbi::MacCatalyst => "apple-a12", }, - Arm64e => "apple-a12", - Arm64_32 => "apple-s4", + Aarch64(E) => "apple-a12", + Aarch64(_32) => "apple-s4", // Only macOS 10.12+ is supported, which means // all x86_64/x86 CPUs must be running at least penryn // https://github.com/llvm/llvm-project/blob/01f924d0e37a5deae51df0d77e10a15b63aa0c0f/clang/lib/Driver/ToolChains/Arch/X86.cpp#L79-L82 - I386 | I686 => "penryn", - X86_64 => "penryn", + X86_32(AppleI386) | X86_32(ClangI686) => "penryn", + X86_64(X64) => "penryn", // Note: `core-avx2` is slightly more advanced than `x86_64h`, see // comments (and disabled features) in `x86_64h_apple_darwin` for // details. It is a higher baseline then `penryn` however. - X86_64h => "core-avx2", + X86_64(Haswell) => "core-avx2", + X86_32(_) => unreachable!(), + X86_64(..) => unreachable!(), + Arm(..) => unreachable!(), } } fn stack_probes(self) -> StackProbeType { match self { - Armv7k | Armv7s => StackProbeType::None, - Arm64 | Arm64e | Arm64_32 | I386 | I686 | X86_64 | X86_64h => StackProbeType::Inline, + Arm(V7K) | Arm(V7S) => StackProbeType::None, + Aarch64(V8A) | Aarch64(E) | Aarch64(_32) | X86_32(AppleI386) | X86_32(ClangI686) + | X86_64(X64) | X86_64(Haswell) => StackProbeType::Inline, + _ => unreachable!(), } } } @@ -126,10 +124,10 @@ pub(crate) fn base( default_dwarf_version: 4, frame_pointer: match arch { // clang ignores `-fomit-frame-pointer` for Armv7, it only accepts `-momit-leaf-frame-pointer` - Armv7k | Armv7s => FramePointer::Always, + Arm(..) => FramePointer::Always, // clang supports omitting frame pointers for the rest, but... don't? - Arm64 | Arm64e | Arm64_32 => FramePointer::NonLeaf, - I386 | I686 | X86_64 | X86_64h => FramePointer::Always, + Aarch64(..) => FramePointer::NonLeaf, + X86_32(..) | X86_64(..) => FramePointer::Always, }, has_rpath: true, dll_suffix: ".dylib".into(), @@ -164,7 +162,7 @@ pub(crate) fn base( ..Default::default() }; - if matches!(arch, Arch::I386 | Arch::I686) { + if matches!(arch, Arch::X86_32(..)) { // All Apple x86-32 targets have SSE2. opts.rustc_abi = Some(RustcAbi::X86Sse2); } diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 7a49f0040722c..8e81aacc56374 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -3654,3 +3654,90 @@ impl fmt::Display for TargetTuple { write!(f, "{}", self.debug_tuple()) } } + +#[derive(Copy, Clone, PartialEq)] +pub(crate) enum Arch { + Arm(ArmVer), + Aarch64(Aarch64Ver), + X86_32(Ix86), + X86_64(X86_64Ver), +} + +#[expect(dead_code)] +#[derive(PartialEq, Copy, Clone)] +pub(crate) enum Ix86 { + /// Apple's idea of what "i386" means. + AppleI386, + /// Pentium. Oldest x86 deliberately supported by rustc. + I586, + /// Pentium 4, despite the name + ClangI686, +} +#[derive(PartialEq, Copy, Clone)] +pub(crate) enum Aarch64Ver { + V8A, + /// What does "E" stand for? Armv8.3-A using a pointer-auth ABI, apparently + E, + _32, +} + +#[expect(dead_code)] +#[derive(PartialEq, Copy, Clone)] +pub(crate) enum ArmVer { + V4T, + V5TE, + V6M, + V6K, + V7A, + V7EM, + V7M, + V7K, + V7S, + V7R, + V8A, + V8M, + V8R, + V9M, + V9R, +} + +#[expect(dead_code)] +#[derive(PartialEq, Copy, Clone)] +pub(crate) enum X86_64Ver { + /// 64-bit long mode + X64, + /// long mode but people try to use 32-bit pointers + X32, + /// Apple target + Haswell, +} + +impl Arch { + /// specially sweet constructor for the most-common arch + pub(crate) const fn x86_64() -> Arch { + Arch::X86_64(X86_64Ver::X64) + } +} + +impl From for Arch { + fn from(arg: X86_64Ver) -> Arch { + Arch::X86_64(arg) + } +} + +impl From for Arch { + fn from(arg: Aarch64Ver) -> Arch { + Arch::Aarch64(arg) + } +} +impl From for Arch { + fn from(arg: ArmVer) -> Arch { + Arch::Arm(arg) + } +} + +impl From for Arch { + fn from(arg: Ix86) -> Arch { + Arch::X86_32(arg) + } +} diff --git a/compiler/rustc_target/src/spec/targets/aarch64_apple_darwin.rs b/compiler/rustc_target/src/spec/targets/aarch64_apple_darwin.rs index 4dd39877715a7..25b68e81dd894 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_apple_darwin.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_apple_darwin.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, SanitizerSet, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("macos", Arch::Arm64, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("macos", Aarch64Ver::V8A.into(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/aarch64_apple_ios.rs b/compiler/rustc_target/src/spec/targets/aarch64_apple_ios.rs index 769a7b6c3919e..1c179b0e893de 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_apple_ios.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_apple_ios.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, SanitizerSet, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("ios", Arch::Arm64, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("ios", Aarch64Ver::V8A.into(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/aarch64_apple_ios_macabi.rs b/compiler/rustc_target/src/spec/targets/aarch64_apple_ios_macabi.rs index 4bb2f73e4f9fd..e5eba672bb00d 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_apple_ios_macabi.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_apple_ios_macabi.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, SanitizerSet, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("ios", Arch::Arm64, TargetAbi::MacCatalyst); + let (opts, llvm_target, arch) = base("ios", Aarch64Ver::V8A.into(), TargetAbi::MacCatalyst); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/aarch64_apple_ios_sim.rs b/compiler/rustc_target/src/spec/targets/aarch64_apple_ios_sim.rs index 7d04034e759b4..b1e101ae0de7d 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_apple_ios_sim.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_apple_ios_sim.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, SanitizerSet, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("ios", Arch::Arm64, TargetAbi::Simulator); + let (opts, llvm_target, arch) = base("ios", Aarch64Ver::V8A.into(), TargetAbi::Simulator); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/aarch64_apple_tvos.rs b/compiler/rustc_target/src/spec/targets/aarch64_apple_tvos.rs index ec92a40e255fb..b5065817446d1 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_apple_tvos.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_apple_tvos.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("tvos", Arch::Arm64, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("tvos", Aarch64Ver::V8A.into(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/aarch64_apple_tvos_sim.rs b/compiler/rustc_target/src/spec/targets/aarch64_apple_tvos_sim.rs index 74fbe5a89ca7c..843d2cabb4f27 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_apple_tvos_sim.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_apple_tvos_sim.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("tvos", Arch::Arm64, TargetAbi::Simulator); + let (opts, llvm_target, arch) = base("tvos", Aarch64Ver::V8A.into(), TargetAbi::Simulator); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/aarch64_apple_visionos.rs b/compiler/rustc_target/src/spec/targets/aarch64_apple_visionos.rs index dc595fbe7b6c1..3defde1be0bde 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_apple_visionos.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_apple_visionos.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, SanitizerSet, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("visionos", Arch::Arm64, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("visionos", Aarch64Ver::V8A.into(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/aarch64_apple_visionos_sim.rs b/compiler/rustc_target/src/spec/targets/aarch64_apple_visionos_sim.rs index 06ff1bfb2f071..3028d459c0544 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_apple_visionos_sim.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_apple_visionos_sim.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, SanitizerSet, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("visionos", Arch::Arm64, TargetAbi::Simulator); + let (opts, llvm_target, arch) = base("visionos", Aarch64Ver::V8A.into(), TargetAbi::Simulator); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/aarch64_apple_watchos.rs b/compiler/rustc_target/src/spec/targets/aarch64_apple_watchos.rs index 2359627110729..00c91a6d24213 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_apple_watchos.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_apple_watchos.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("watchos", Arch::Arm64, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("watchos", Aarch64Ver::V8A.into(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/aarch64_apple_watchos_sim.rs b/compiler/rustc_target/src/spec/targets/aarch64_apple_watchos_sim.rs index bad9f6c1485c8..0c3de959856fd 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_apple_watchos_sim.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_apple_watchos_sim.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("watchos", Arch::Arm64, TargetAbi::Simulator); + let (opts, llvm_target, arch) = base("watchos", Aarch64Ver::V8A.into(), TargetAbi::Simulator); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/arm64_32_apple_watchos.rs b/compiler/rustc_target/src/spec/targets/arm64_32_apple_watchos.rs index 4c3a2f4374387..10a8f49fa7488 100644 --- a/compiler/rustc_target/src/spec/targets/arm64_32_apple_watchos.rs +++ b/compiler/rustc_target/src/spec/targets/arm64_32_apple_watchos.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("watchos", Arch::Arm64_32, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("watchos", Aarch64Ver::_32.into(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/arm64e_apple_darwin.rs b/compiler/rustc_target/src/spec/targets/arm64e_apple_darwin.rs index 326f2b16d594f..aabdf57c96062 100644 --- a/compiler/rustc_target/src/spec/targets/arm64e_apple_darwin.rs +++ b/compiler/rustc_target/src/spec/targets/arm64e_apple_darwin.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, SanitizerSet, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("macos", Arch::Arm64e, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("macos", Aarch64Ver::E.into(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/arm64e_apple_ios.rs b/compiler/rustc_target/src/spec/targets/arm64e_apple_ios.rs index 01c6f0b888d65..4deaa406444e0 100644 --- a/compiler/rustc_target/src/spec/targets/arm64e_apple_ios.rs +++ b/compiler/rustc_target/src/spec/targets/arm64e_apple_ios.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, SanitizerSet, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("ios", Arch::Arm64e, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("ios", Aarch64Ver::E.into(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/arm64e_apple_tvos.rs b/compiler/rustc_target/src/spec/targets/arm64e_apple_tvos.rs index cad3650bda1a4..136258447bd7b 100644 --- a/compiler/rustc_target/src/spec/targets/arm64e_apple_tvos.rs +++ b/compiler/rustc_target/src/spec/targets/arm64e_apple_tvos.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Aarch64Ver, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("tvos", Arch::Arm64e, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("tvos", Aarch64Ver::E.into(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/armv7k_apple_watchos.rs b/compiler/rustc_target/src/spec/targets/armv7k_apple_watchos.rs index 8103d132cea81..b6994999b066a 100644 --- a/compiler/rustc_target/src/spec/targets/armv7k_apple_watchos.rs +++ b/compiler/rustc_target/src/spec/targets/armv7k_apple_watchos.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{ArmVer, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("watchos", Arch::Armv7k, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("watchos", ArmVer::V7K.into(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/armv7s_apple_ios.rs b/compiler/rustc_target/src/spec/targets/armv7s_apple_ios.rs index ba9edd714612d..ee67f6f4a1129 100644 --- a/compiler/rustc_target/src/spec/targets/armv7s_apple_ios.rs +++ b/compiler/rustc_target/src/spec/targets/armv7s_apple_ios.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{ArmVer, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("ios", Arch::Armv7s, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("ios", ArmVer::V7S.into(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/i386_apple_ios.rs b/compiler/rustc_target/src/spec/targets/i386_apple_ios.rs index 29865fcd4c4ed..0ae3fa34a73fe 100644 --- a/compiler/rustc_target/src/spec/targets/i386_apple_ios.rs +++ b/compiler/rustc_target/src/spec/targets/i386_apple_ios.rs @@ -1,10 +1,10 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Ix86, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { // i386-apple-ios is a simulator target, even though it isn't declared // that way in the target name like the other ones... - let (opts, llvm_target, arch) = base("ios", Arch::I386, TargetAbi::Simulator); + let (opts, llvm_target, arch) = base("ios", Ix86::AppleI386.into(), TargetAbi::Simulator); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/i686_apple_darwin.rs b/compiler/rustc_target/src/spec/targets/i686_apple_darwin.rs index d1339c57b0088..ee99ba595dcb5 100644 --- a/compiler/rustc_target/src/spec/targets/i686_apple_darwin.rs +++ b/compiler/rustc_target/src/spec/targets/i686_apple_darwin.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{Ix86, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("macos", Arch::I686, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("macos", Ix86::ClangI686.into(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/x86_64_apple_darwin.rs b/compiler/rustc_target/src/spec/targets/x86_64_apple_darwin.rs index eba595ba7dd24..47053df16303a 100644 --- a/compiler/rustc_target/src/spec/targets/x86_64_apple_darwin.rs +++ b/compiler/rustc_target/src/spec/targets/x86_64_apple_darwin.rs @@ -2,7 +2,7 @@ use crate::spec::base::apple::{Arch, TargetAbi, base}; use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("macos", Arch::X86_64, TargetAbi::Normal); + let (opts, llvm_target, arch) = base("macos", Arch::x86_64(), TargetAbi::Normal); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/x86_64_apple_ios.rs b/compiler/rustc_target/src/spec/targets/x86_64_apple_ios.rs index df45f430ecbfa..934f863779ae0 100644 --- a/compiler/rustc_target/src/spec/targets/x86_64_apple_ios.rs +++ b/compiler/rustc_target/src/spec/targets/x86_64_apple_ios.rs @@ -4,7 +4,7 @@ use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { // x86_64-apple-ios is a simulator target, even though it isn't declared // that way in the target name like the other ones... - let (opts, llvm_target, arch) = base("ios", Arch::X86_64, TargetAbi::Simulator); + let (opts, llvm_target, arch) = base("ios", Arch::x86_64(), TargetAbi::Simulator); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/x86_64_apple_ios_macabi.rs b/compiler/rustc_target/src/spec/targets/x86_64_apple_ios_macabi.rs index ee0c2bf31cd47..5045854813750 100644 --- a/compiler/rustc_target/src/spec/targets/x86_64_apple_ios_macabi.rs +++ b/compiler/rustc_target/src/spec/targets/x86_64_apple_ios_macabi.rs @@ -2,7 +2,7 @@ use crate::spec::base::apple::{Arch, TargetAbi, base}; use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("ios", Arch::X86_64, TargetAbi::MacCatalyst); + let (opts, llvm_target, arch) = base("ios", Arch::x86_64(), TargetAbi::MacCatalyst); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/x86_64_apple_tvos.rs b/compiler/rustc_target/src/spec/targets/x86_64_apple_tvos.rs index 80ca80013f05f..8b8b7799ced82 100644 --- a/compiler/rustc_target/src/spec/targets/x86_64_apple_tvos.rs +++ b/compiler/rustc_target/src/spec/targets/x86_64_apple_tvos.rs @@ -4,7 +4,7 @@ use crate::spec::{Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { // x86_64-apple-tvos is a simulator target, even though it isn't declared // that way in the target name like the other ones... - let (opts, llvm_target, arch) = base("tvos", Arch::X86_64, TargetAbi::Simulator); + let (opts, llvm_target, arch) = base("tvos", Arch::x86_64(), TargetAbi::Simulator); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/x86_64_apple_watchos_sim.rs b/compiler/rustc_target/src/spec/targets/x86_64_apple_watchos_sim.rs index c503baedb8b50..2bcffccbb5427 100644 --- a/compiler/rustc_target/src/spec/targets/x86_64_apple_watchos_sim.rs +++ b/compiler/rustc_target/src/spec/targets/x86_64_apple_watchos_sim.rs @@ -2,7 +2,7 @@ use crate::spec::base::apple::{Arch, TargetAbi, base}; use crate::spec::{Target, TargetMetadata, TargetOptions}; pub(crate) fn target() -> Target { - let (opts, llvm_target, arch) = base("watchos", Arch::X86_64, TargetAbi::Simulator); + let (opts, llvm_target, arch) = base("watchos", Arch::x86_64(), TargetAbi::Simulator); Target { llvm_target, metadata: TargetMetadata { diff --git a/compiler/rustc_target/src/spec/targets/x86_64h_apple_darwin.rs b/compiler/rustc_target/src/spec/targets/x86_64h_apple_darwin.rs index e64556c4132ab..23e6fd17c054c 100644 --- a/compiler/rustc_target/src/spec/targets/x86_64h_apple_darwin.rs +++ b/compiler/rustc_target/src/spec/targets/x86_64h_apple_darwin.rs @@ -1,8 +1,8 @@ -use crate::spec::base::apple::{Arch, TargetAbi, base}; -use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions}; +use crate::spec::base::apple::{TargetAbi, base}; +use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions, X86_64Ver}; pub(crate) fn target() -> Target { - let (mut opts, llvm_target, arch) = base("macos", Arch::X86_64h, TargetAbi::Normal); + let (mut opts, llvm_target, arch) = base("macos", X86_64Ver::Haswell.into(), TargetAbi::Normal); opts.max_atomic_width = Some(128); opts.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::LEAK | SanitizerSet::THREAD;