Skip to content

Commit ea5405e

Browse files
loicUrgau
loic
authored andcommitted
Lazify llvm_target fields
1 parent 19a83ba commit ea5405e

19 files changed

+20
-20
lines changed

compiler/rustc_target/src/spec/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1846,7 +1846,7 @@ impl TargetWarnings {
18461846
#[derive(PartialEq, Clone, Debug)]
18471847
pub struct Target {
18481848
/// Target triple to pass to LLVM.
1849-
pub llvm_target: StaticCow<str>,
1849+
pub llvm_target: MaybeLazy<str>,
18501850
/// Metadata about a target, for example the description or tier.
18511851
/// Used for generating target documentation.
18521852
pub metadata: TargetMetadata,
@@ -2698,7 +2698,7 @@ impl Target {
26982698
};
26992699

27002700
let mut base = Target {
2701-
llvm_target: get_req_field("llvm-target")?.into(),
2701+
llvm_target: MaybeLazy::owned(get_req_field("llvm-target")?),
27022702
metadata: Default::default(),
27032703
pointer_width: get_req_field("target-pointer-width")?
27042704
.parse::<u32>()

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ pub fn target() -> Target {
1616
// Clang automatically chooses a more specific target based on
1717
// MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work
1818
// correctly, we do too.
19-
llvm_target: macos_llvm_target(ARCH).into(),
19+
llvm_target: MaybeLazy::lazy(|| macos_llvm_target(ARCH)),
2020
metadata: crate::spec::TargetMetadata {
2121
description: None,
2222
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub fn target() -> Target {
1313
// IPHONEOS_DEPLOYMENT_TARGET.
1414
// This is required for the target to pick the right
1515
// MACH-O commands, so we do too.
16-
llvm_target: ios_llvm_target(ARCH).into(),
16+
llvm_target: MaybeLazy::lazy(|| ios_llvm_target(ARCH)),
1717
metadata: crate::spec::TargetMetadata {
1818
description: None,
1919
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ pub fn target() -> Target {
99
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::LEAK | SanitizerSet::THREAD;
1010

1111
Target {
12-
llvm_target: mac_catalyst_llvm_target(ARCH).into(),
12+
llvm_target: MaybeLazy::lazy(|| mac_catalyst_llvm_target(ARCH)),
1313
metadata: crate::spec::TargetMetadata {
1414
description: None,
1515
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub fn target() -> Target {
1313
// IPHONEOS_DEPLOYMENT_TARGET.
1414
// This is required for the simulator target to pick the right
1515
// MACH-O commands, so we do too.
16-
llvm_target: ios_sim_llvm_target(ARCH).into(),
16+
llvm_target: MaybeLazy::lazy(|| ios_sim_llvm_target(ARCH)),
1717
metadata: crate::spec::TargetMetadata {
1818
description: None,
1919
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ pub fn target() -> Target {
66
const OS: &'static str = "tvos";
77

88
Target {
9-
llvm_target: tvos_llvm_target(ARCH).into(),
9+
llvm_target: MaybeLazy::lazy(|| tvos_llvm_target(ARCH)),
1010
metadata: crate::spec::TargetMetadata {
1111
description: None,
1212
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ pub fn target() -> Target {
66
const OS: &'static str = "tvos";
77

88
Target {
9-
llvm_target: tvos_sim_llvm_target(ARCH).into(),
9+
llvm_target: MaybeLazy::lazy(|| tvos_sim_llvm_target(ARCH)),
1010
metadata: crate::spec::TargetMetadata {
1111
description: None,
1212
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub fn target() -> Target {
1010
// WATCHOS_DEPLOYMENT_TARGET.
1111
// This is required for the simulator target to pick the right
1212
// MACH-O commands, so we do too.
13-
llvm_target: watchos_sim_llvm_target(ARCH).into(),
13+
llvm_target: MaybeLazy::lazy(|| watchos_sim_llvm_target(ARCH)),
1414
metadata: crate::spec::TargetMetadata {
1515
description: None,
1616
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ pub fn target() -> Target {
1616
// Clang automatically chooses a more specific target based on
1717
// MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work
1818
// correctly, we do too.
19-
llvm_target: macos_llvm_target(ARCH).into(),
19+
llvm_target: MaybeLazy::lazy(|| macos_llvm_target(ARCH)),
2020
metadata: crate::spec::TargetMetadata {
2121
description: None,
2222
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub fn target() -> Target {
1313
// IPHONEOS_DEPLOYMENT_TARGET.
1414
// This is required for the target to pick the right
1515
// MACH-O commands, so we do too.
16-
llvm_target: ios_llvm_target(ARCH).into(),
16+
llvm_target: MaybeLazy::lazy(|| ios_llvm_target(ARCH)),
1717
metadata: crate::spec::TargetMetadata {
1818
description: None,
1919
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ pub fn target() -> Target {
66
const OS: &'static str = "ios";
77

88
Target {
9-
llvm_target: ios_llvm_target(ARCH).into(),
9+
llvm_target: MaybeLazy::lazy(|| ios_llvm_target(ARCH)),
1010
metadata: crate::spec::TargetMetadata {
1111
description: None,
1212
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pub fn target() -> Target {
1212
// IPHONEOS_DEPLOYMENT_TARGET.
1313
// This is required for the target to pick the right
1414
// MACH-O commands, so we do too.
15-
llvm_target: ios_sim_llvm_target(ARCH).into(),
15+
llvm_target: MaybeLazy::lazy(|| ios_sim_llvm_target(ARCH)),
1616
metadata: crate::spec::TargetMetadata {
1717
description: None,
1818
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub fn target() -> Target {
1919
// correctly, we do too.
2020
//
2121
// While ld64 doesn't understand i686, LLVM does.
22-
llvm_target: macos_llvm_target(Arch::I686).into(),
22+
llvm_target: MaybeLazy::lazy(|| macos_llvm_target(Arch::I686)),
2323
metadata: crate::spec::TargetMetadata {
2424
description: None,
2525
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub fn target() -> Target {
1919
// Clang automatically chooses a more specific target based on
2020
// MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work
2121
// correctly, we do too.
22-
llvm_target: macos_llvm_target(ARCH).into(),
22+
llvm_target: MaybeLazy::lazy(|| macos_llvm_target(ARCH)),
2323
metadata: crate::spec::TargetMetadata {
2424
description: None,
2525
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub fn target() -> Target {
1111
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::THREAD;
1212

1313
Target {
14-
llvm_target: ios_sim_llvm_target(ARCH).into(),
14+
llvm_target: MaybeLazy::lazy(|| ios_sim_llvm_target(ARCH)),
1515
metadata: crate::spec::TargetMetadata {
1616
description: None,
1717
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ pub fn target() -> Target {
99
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::LEAK | SanitizerSet::THREAD;
1010

1111
Target {
12-
llvm_target: mac_catalyst_llvm_target(ARCH).into(),
12+
llvm_target: MaybeLazy::lazy(|| mac_catalyst_llvm_target(ARCH)),
1313
metadata: crate::spec::TargetMetadata {
1414
description: None,
1515
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ pub fn target() -> Target {
88
const OS: &'static str = "tvos";
99

1010
Target {
11-
llvm_target: tvos_sim_llvm_target(ARCH).into(),
11+
llvm_target: MaybeLazy::lazy(|| tvos_sim_llvm_target(ARCH)),
1212
metadata: crate::spec::TargetMetadata {
1313
description: None,
1414
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ pub fn target() -> Target {
66
const OS: &'static str = "watchos";
77

88
Target {
9-
llvm_target: watchos_sim_llvm_target(ARCH).into(),
9+
llvm_target: MaybeLazy::lazy(|| watchos_sim_llvm_target(ARCH)),
1010
metadata: crate::spec::TargetMetadata {
1111
description: None,
1212
tier: None,

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ pub fn target() -> Target {
3737
// Clang automatically chooses a more specific target based on
3838
// MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work
3939
// correctly, we do too.
40-
llvm_target: macos_llvm_target(ARCH).into(),
40+
llvm_target: MaybeLazy::lazy(|| macos_llvm_target(ARCH)),
4141
metadata: crate::spec::TargetMetadata {
4242
description: None,
4343
tier: None,

0 commit comments

Comments
 (0)