Skip to content

Commit 87953ef

Browse files
authored
Unrolled build for #141797
Rollup merge of #141797 - workingjubilee:apple-likes-frame-pointers-but-not-that-much, r=madsmtm compiler: set Apple frame pointers by architecture All Apple targets stop overriding this configuration and instead use the default base of FramePointer::NonLeaf, which means some Apples will have less frame pointers in leaf functions. r? ``@madsmtm`` cc ``@thomcc``
2 parents 1dc9ae6 + b25aa26 commit 87953ef

16 files changed

+23
-36
lines changed

compiler/rustc_target/src/spec/base/apple/mod.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,13 @@ pub(crate) fn base(
124124
// to v4, so we do the same.
125125
// https://github.com/llvm/llvm-project/blob/378778a0d10c2f8d5df8ceff81f95b6002984a4b/clang/lib/Driver/ToolChains/Darwin.cpp#L1203
126126
default_dwarf_version: 4,
127-
frame_pointer: FramePointer::Always,
127+
frame_pointer: match arch {
128+
// clang ignores `-fomit-frame-pointer` for Armv7, it only accepts `-momit-leaf-frame-pointer`
129+
Armv7k | Armv7s => FramePointer::Always,
130+
// clang supports omitting frame pointers for the rest, but... don't?
131+
Arm64 | Arm64e | Arm64_32 => FramePointer::NonLeaf,
132+
I386 | I686 | X86_64 | X86_64h => FramePointer::Always,
133+
},
128134
has_rpath: true,
129135
dll_suffix: ".dylib".into(),
130136
archive_format: "darwin".into(),

compiler/rustc_target/src/spec/targets/aarch64_apple_darwin.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, SanitizerSet, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("macos", Arch::Arm64, TargetAbi::Normal);
@@ -17,7 +17,6 @@ pub(crate) fn target() -> Target {
1717
arch,
1818
options: TargetOptions {
1919
mcount: "\u{1}mcount".into(),
20-
frame_pointer: FramePointer::NonLeaf,
2120
cpu: "apple-m1".into(),
2221
max_atomic_width: Some(128),
2322
// FIXME: The leak sanitizer currently fails the tests, see #88132.

compiler/rustc_target/src/spec/targets/aarch64_apple_ios.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, SanitizerSet, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("ios", Arch::Arm64, TargetAbi::Normal);
@@ -18,7 +18,6 @@ pub(crate) fn target() -> Target {
1818
options: TargetOptions {
1919
features: "+neon,+fp-armv8,+apple-a7".into(),
2020
max_atomic_width: Some(128),
21-
frame_pointer: FramePointer::NonLeaf,
2221
supported_sanitizers: SanitizerSet::ADDRESS | SanitizerSet::THREAD,
2322
..opts
2423
},

compiler/rustc_target/src/spec/targets/aarch64_apple_ios_macabi.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, SanitizerSet, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("ios", Arch::Arm64, TargetAbi::MacCatalyst);
@@ -18,7 +18,6 @@ pub(crate) fn target() -> Target {
1818
options: TargetOptions {
1919
features: "+neon,+fp-armv8,+apple-a12".into(),
2020
max_atomic_width: Some(128),
21-
frame_pointer: FramePointer::NonLeaf,
2221
supported_sanitizers: SanitizerSet::ADDRESS | SanitizerSet::LEAK | SanitizerSet::THREAD,
2322
..opts
2423
},

compiler/rustc_target/src/spec/targets/aarch64_apple_ios_sim.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, SanitizerSet, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("ios", Arch::Arm64, TargetAbi::Simulator);
@@ -18,7 +18,6 @@ pub(crate) fn target() -> Target {
1818
options: TargetOptions {
1919
features: "+neon,+fp-armv8,+apple-a7".into(),
2020
max_atomic_width: Some(128),
21-
frame_pointer: FramePointer::NonLeaf,
2221
supported_sanitizers: SanitizerSet::ADDRESS | SanitizerSet::THREAD,
2322
..opts
2423
},

compiler/rustc_target/src/spec/targets/aarch64_apple_tvos.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("tvos", Arch::Arm64, TargetAbi::Normal);
@@ -18,7 +18,6 @@ pub(crate) fn target() -> Target {
1818
options: TargetOptions {
1919
features: "+neon,+fp-armv8,+apple-a7".into(),
2020
max_atomic_width: Some(128),
21-
frame_pointer: FramePointer::NonLeaf,
2221
..opts
2322
},
2423
}

compiler/rustc_target/src/spec/targets/aarch64_apple_tvos_sim.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("tvos", Arch::Arm64, TargetAbi::Simulator);
@@ -18,7 +18,6 @@ pub(crate) fn target() -> Target {
1818
options: TargetOptions {
1919
features: "+neon,+fp-armv8,+apple-a7".into(),
2020
max_atomic_width: Some(128),
21-
frame_pointer: FramePointer::NonLeaf,
2221
..opts
2322
},
2423
}

compiler/rustc_target/src/spec/targets/aarch64_apple_visionos.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, SanitizerSet, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("visionos", Arch::Arm64, TargetAbi::Normal);
@@ -18,7 +18,6 @@ pub(crate) fn target() -> Target {
1818
options: TargetOptions {
1919
features: "+neon,+fp-armv8,+apple-a16".into(),
2020
max_atomic_width: Some(128),
21-
frame_pointer: FramePointer::NonLeaf,
2221
supported_sanitizers: SanitizerSet::ADDRESS | SanitizerSet::THREAD,
2322
..opts
2423
},

compiler/rustc_target/src/spec/targets/aarch64_apple_visionos_sim.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, SanitizerSet, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("visionos", Arch::Arm64, TargetAbi::Simulator);
@@ -18,7 +18,6 @@ pub(crate) fn target() -> Target {
1818
options: TargetOptions {
1919
features: "+neon,+fp-armv8,+apple-a16".into(),
2020
max_atomic_width: Some(128),
21-
frame_pointer: FramePointer::NonLeaf,
2221
supported_sanitizers: SanitizerSet::ADDRESS | SanitizerSet::THREAD,
2322
..opts
2423
},

compiler/rustc_target/src/spec/targets/aarch64_apple_watchos_sim.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("watchos", Arch::Arm64, TargetAbi::Simulator);
@@ -18,7 +18,6 @@ pub(crate) fn target() -> Target {
1818
options: TargetOptions {
1919
features: "+neon,+fp-armv8,+apple-a7".into(),
2020
max_atomic_width: Some(128),
21-
frame_pointer: FramePointer::NonLeaf,
2221
..opts
2322
},
2423
}

compiler/rustc_target/src/spec/targets/arm64e_apple_darwin.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, SanitizerSet, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("macos", Arch::Arm64e, TargetAbi::Normal);
@@ -17,7 +17,6 @@ pub(crate) fn target() -> Target {
1717
arch,
1818
options: TargetOptions {
1919
mcount: "\u{1}mcount".into(),
20-
frame_pointer: FramePointer::NonLeaf,
2120
cpu: "apple-m1".into(),
2221
max_atomic_width: Some(128),
2322
// FIXME: The leak sanitizer currently fails the tests, see #88132.

compiler/rustc_target/src/spec/targets/arm64e_apple_ios.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, SanitizerSet, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("ios", Arch::Arm64e, TargetAbi::Normal);
@@ -18,7 +18,6 @@ pub(crate) fn target() -> Target {
1818
options: TargetOptions {
1919
features: "+neon,+fp-armv8,+apple-a12,+v8.3a,+pauth".into(),
2020
max_atomic_width: Some(128),
21-
frame_pointer: FramePointer::NonLeaf,
2221
supported_sanitizers: SanitizerSet::ADDRESS | SanitizerSet::THREAD,
2322
..opts
2423
},

compiler/rustc_target/src/spec/targets/arm64e_apple_tvos.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("tvos", Arch::Arm64e, TargetAbi::Normal);
@@ -18,7 +18,6 @@ pub(crate) fn target() -> Target {
1818
options: TargetOptions {
1919
features: "+neon,+fp-armv8,+apple-a12,+v8.3a,+pauth".into(),
2020
max_atomic_width: Some(128),
21-
frame_pointer: FramePointer::NonLeaf,
2221
..opts
2322
},
2423
}

compiler/rustc_target/src/spec/targets/i686_apple_darwin.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("macos", Arch::I686, TargetAbi::Normal);
@@ -16,11 +16,6 @@ pub(crate) fn target() -> Target {
1616
i128:128-f64:32:64-f80:128-n8:16:32-S128"
1717
.into(),
1818
arch,
19-
options: TargetOptions {
20-
mcount: "\u{1}mcount".into(),
21-
max_atomic_width: Some(64),
22-
frame_pointer: FramePointer::Always,
23-
..opts
24-
},
19+
options: TargetOptions { mcount: "\u{1}mcount".into(), max_atomic_width: Some(64), ..opts },
2520
}
2621
}

compiler/rustc_target/src/spec/targets/x86_64_apple_darwin.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, SanitizerSet, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (opts, llvm_target, arch) = base("macos", Arch::X86_64, TargetAbi::Normal);
@@ -18,7 +18,6 @@ pub(crate) fn target() -> Target {
1818
options: TargetOptions {
1919
mcount: "\u{1}mcount".into(),
2020
max_atomic_width: Some(128), // penryn+ supports cmpxchg16b
21-
frame_pointer: FramePointer::Always,
2221
supported_sanitizers: SanitizerSet::ADDRESS
2322
| SanitizerSet::CFI
2423
| SanitizerSet::LEAK

compiler/rustc_target/src/spec/targets/x86_64h_apple_darwin.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
use crate::spec::base::apple::{Arch, TargetAbi, base};
2-
use crate::spec::{FramePointer, SanitizerSet, Target, TargetMetadata, TargetOptions};
2+
use crate::spec::{SanitizerSet, Target, TargetMetadata, TargetOptions};
33

44
pub(crate) fn target() -> Target {
55
let (mut opts, llvm_target, arch) = base("macos", Arch::X86_64h, TargetAbi::Normal);
66
opts.max_atomic_width = Some(128);
7-
opts.frame_pointer = FramePointer::Always;
87
opts.supported_sanitizers =
98
SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::LEAK | SanitizerSet::THREAD;
109

0 commit comments

Comments
 (0)