Skip to content

Commit 7ecf136

Browse files
committed
cow! targets - part 1
1 parent 5439ffc commit 7ecf136

File tree

230 files changed

+1583
-1208
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

230 files changed

+1583
-1208
lines changed

compiler/rustc_target/src/spec/mod.rs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1714,7 +1714,7 @@ macro_rules! cvs {
17141714
}
17151715

17161716
/// Cow-Str: Cow<'static, str>
1717-
macro_rules! cs {
1717+
macro_rules! cow {
17181718
() => {
17191719
::std::borrow::Cow::Borrowed()
17201720
};
@@ -1723,7 +1723,7 @@ macro_rules! cs {
17231723
};
17241724
}
17251725

1726-
pub(crate) use cs;
1726+
pub(crate) use cow;
17271727
pub(crate) use cvs;
17281728

17291729
/// Warnings encountered when parsing the target `json`.
@@ -2295,13 +2295,13 @@ impl TargetOptions {
22952295
TargetOptions {
22962296
is_builtin: false,
22972297
endian: Endian::Little,
2298-
c_int_width: cs!("32"),
2299-
os: cs!("none"),
2300-
env: cs!(""),
2301-
abi: cs!(""),
2302-
vendor: cs!("unknown"),
2298+
c_int_width: cow!("32"),
2299+
os: cow!("none"),
2300+
env: cow!(""),
2301+
abi: cow!(""),
2302+
vendor: cow!("unknown"),
23032303
linker: if let Some(s) = option_env!("CFG_DEFAULT_LINKER") {
2304-
Some(cs!(s))
2304+
Some(cow!(s))
23052305
} else {
23062306
None
23072307
},
@@ -2311,8 +2311,8 @@ impl TargetOptions {
23112311
linker_is_gnu_json: true,
23122312
link_script: None,
23132313
asm_args: cvs![],
2314-
cpu: cs!("generic"),
2315-
features: cs!(""),
2314+
cpu: cow!("generic"),
2315+
features: cow!(""),
23162316
direct_access_external_data: None,
23172317
dynamic_linking: false,
23182318
dll_tls_export: true,
@@ -2324,11 +2324,11 @@ impl TargetOptions {
23242324
disable_redzone: false,
23252325
frame_pointer: FramePointer::MayOmit,
23262326
function_sections: true,
2327-
dll_prefix: cs!("lib"),
2328-
dll_suffix: cs!(".so"),
2329-
exe_suffix: cs!(""),
2330-
staticlib_prefix: cs!("lib"),
2331-
staticlib_suffix: cs!(".a"),
2327+
dll_prefix: cow!("lib"),
2328+
dll_suffix: cow!(".so"),
2329+
exe_suffix: cow!(""),
2330+
staticlib_prefix: cow!("lib"),
2331+
staticlib_suffix: cow!(".a"),
23322332
families: cvs![],
23332333
abi_return_struct_as_int: false,
23342334
is_like_aix: false,
@@ -2363,13 +2363,13 @@ impl TargetOptions {
23632363
post_link_args_json: LinkArgsCli::new(),
23642364
link_env: cvs![],
23652365
link_env_remove: cvs![],
2366-
archive_format: cs!("gnu"),
2366+
archive_format: cow!("gnu"),
23672367
main_needs_argc_argv: true,
23682368
allow_asm: true,
23692369
has_thread_local: false,
23702370
obj_is_bitcode: false,
23712371
forces_embed_bitcode: false,
2372-
bitcode_llvm_cmdline: cs!(""),
2372+
bitcode_llvm_cmdline: cow!(""),
23732373
min_atomic_width: None,
23742374
max_atomic_width: None,
23752375
atomic_cas: true,
@@ -2392,9 +2392,9 @@ impl TargetOptions {
23922392
limit_rdylib_exports: true,
23932393
override_export_symbols: None,
23942394
merge_functions: MergeFunctions::Aliases,
2395-
mcount: cs!("mcount"),
2395+
mcount: cow!("mcount"),
23962396
llvm_mcount_intrinsic: None,
2397-
llvm_abiname: cs!(""),
2397+
llvm_abiname: cow!(""),
23982398
relax_elf_relocations: false,
23992399
llvm_args: cvs![],
24002400
use_ctors_section: false,
@@ -2409,7 +2409,7 @@ impl TargetOptions {
24092409
c_enum_min_bits: None,
24102410
generate_arange_section: true,
24112411
supports_stack_protector: true,
2412-
entry_name: cs!("main"),
2412+
entry_name: cow!("main"),
24132413
entry_abi: Conv::C,
24142414
supports_xray: false,
24152415
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::spec::cow;
12
use std::sync::LazyLock;
23

34
use crate::spec::base::apple::{macos_llvm_target, opts, pre_link_args, Arch};
@@ -8,7 +9,7 @@ pub fn target() -> Target {
89
const OS: &'static str = "macos";
910

1011
let mut base = opts(OS, ARCH);
11-
base.cpu = "apple-m1".into();
12+
base.cpu = cow!("apple-m1");
1213
base.max_atomic_width = Some(128);
1314

1415
// FIXME: The leak sanitizer currently fails the tests, see #88132.
@@ -22,10 +23,10 @@ pub fn target() -> Target {
2223
// correctly, we do too.
2324
llvm_target: macos_llvm_target(ARCH).into(),
2425
pointer_width: 64,
25-
data_layout: "e-m:o-i64:64-i128:128-n32:64-S128".into(),
26+
data_layout: cow!("e-m:o-i64:64-i128:128-n32:64-S128"),
2627
arch: ARCH.target_arch(),
2728
options: TargetOptions {
28-
mcount: "\u{1}mcount".into(),
29+
mcount: cow!("\u{1}mcount"),
2930
frame_pointer: FramePointer::NonLeaf,
3031
..base
3132
},

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
use crate::spec::base::apple::{ios_llvm_target, opts, Arch};
2+
use crate::spec::cow;
3+
24
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
35

46
pub fn target() -> Target {
@@ -13,10 +15,10 @@ pub fn target() -> Target {
1315
// MACH-O commands, so we do too.
1416
llvm_target: ios_llvm_target(arch).into(),
1517
pointer_width: 64,
16-
data_layout: "e-m:o-i64:64-i128:128-n32:64-S128".into(),
18+
data_layout: cow!("e-m:o-i64:64-i128:128-n32:64-S128"),
1719
arch: arch.target_arch(),
1820
options: TargetOptions {
19-
features: "+neon,+fp-armv8,+apple-a7".into(),
21+
features: cow!("+neon,+fp-armv8,+apple-a7"),
2022
max_atomic_width: Some(128),
2123
frame_pointer: FramePointer::NonLeaf,
2224
..base

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
use crate::spec::base::apple::{mac_catalyst_llvm_target, opts, Arch};
2+
use crate::spec::cow;
3+
24
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
35

46
pub fn target() -> Target {
@@ -9,10 +11,10 @@ pub fn target() -> Target {
911
Target {
1012
llvm_target: mac_catalyst_llvm_target(arch).into(),
1113
pointer_width: 64,
12-
data_layout: "e-m:o-i64:64-i128:128-n32:64-S128".into(),
14+
data_layout: cow!("e-m:o-i64:64-i128:128-n32:64-S128"),
1315
arch: arch.target_arch(),
1416
options: TargetOptions {
15-
features: "+neon,+fp-armv8,+apple-a12".into(),
17+
features: cow!("+neon,+fp-armv8,+apple-a12"),
1618
max_atomic_width: Some(128),
1719
frame_pointer: FramePointer::NonLeaf,
1820
..base

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
use crate::spec::base::apple::{ios_sim_llvm_target, opts, Arch};
2+
use crate::spec::cow;
3+
24
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
35

46
pub fn target() -> Target {
@@ -13,10 +15,10 @@ pub fn target() -> Target {
1315
// MACH-O commands, so we do too.
1416
llvm_target: ios_sim_llvm_target(arch).into(),
1517
pointer_width: 64,
16-
data_layout: "e-m:o-i64:64-i128:128-n32:64-S128".into(),
18+
data_layout: cow!("e-m:o-i64:64-i128:128-n32:64-S128"),
1719
arch: arch.target_arch(),
1820
options: TargetOptions {
19-
features: "+neon,+fp-armv8,+apple-a7".into(),
21+
features: cow!("+neon,+fp-armv8,+apple-a7"),
2022
max_atomic_width: Some(128),
2123
frame_pointer: FramePointer::NonLeaf,
2224
..base

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
use crate::spec::base::apple::{opts, tvos_llvm_target, Arch};
2+
use crate::spec::cow;
3+
24
use crate::spec::{FramePointer, Target, TargetOptions};
35

46
pub fn target() -> Target {
57
let arch = Arch::Arm64;
68
Target {
79
llvm_target: tvos_llvm_target(arch).into(),
810
pointer_width: 64,
9-
data_layout: "e-m:o-i64:64-i128:128-n32:64-S128".into(),
11+
data_layout: cow!("e-m:o-i64:64-i128:128-n32:64-S128"),
1012
arch: arch.target_arch(),
1113
options: TargetOptions {
12-
features: "+neon,+fp-armv8,+apple-a7".into(),
14+
features: cow!("+neon,+fp-armv8,+apple-a7"),
1315
max_atomic_width: Some(128),
1416
frame_pointer: FramePointer::NonLeaf,
1517
..opts("tvos", arch)

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
use crate::spec::base::apple::{opts, tvos_sim_llvm_target, Arch};
2+
use crate::spec::cow;
3+
24
use crate::spec::{FramePointer, Target, TargetOptions};
35

46
pub fn target() -> Target {
57
let arch = Arch::Arm64_sim;
68
Target {
79
llvm_target: tvos_sim_llvm_target(arch).into(),
810
pointer_width: 64,
9-
data_layout: "e-m:o-i64:64-i128:128-n32:64-S128".into(),
11+
data_layout: cow!("e-m:o-i64:64-i128:128-n32:64-S128"),
1012
arch: arch.target_arch(),
1113
options: TargetOptions {
12-
features: "+neon,+fp-armv8,+apple-a7".into(),
14+
features: cow!("+neon,+fp-armv8,+apple-a7"),
1315
max_atomic_width: Some(128),
1416
frame_pointer: FramePointer::NonLeaf,
1517
..opts("tvos", arch)

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
use crate::spec::base::apple::{opts, Arch};
2+
use crate::spec::cow;
3+
24
use crate::spec::{Target, TargetOptions};
35

46
pub fn target() -> Target {
57
let base = opts("watchos", Arch::Arm64);
68
Target {
7-
llvm_target: "aarch64-apple-watchos".into(),
9+
llvm_target: cow!("aarch64-apple-watchos"),
810
pointer_width: 64,
9-
data_layout: "e-m:o-i64:64-i128:128-n32:64-S128".into(),
10-
arch: "aarch64".into(),
11+
data_layout: cow!("e-m:o-i64:64-i128:128-n32:64-S128"),
12+
arch: cow!("aarch64"),
1113
options: TargetOptions {
12-
features: "+v8a,+neon,+fp-armv8,+apple-a7".into(),
14+
features: cow!("+v8a,+neon,+fp-armv8,+apple-a7"),
1315
max_atomic_width: Some(128),
1416
dynamic_linking: false,
1517
position_independent_executables: true,

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
use crate::spec::base::apple::{opts, watchos_sim_llvm_target, Arch};
2+
use crate::spec::cow;
3+
24
use crate::spec::{FramePointer, Target, TargetOptions};
35

46
pub fn target() -> Target {
@@ -10,10 +12,10 @@ pub fn target() -> Target {
1012
// MACH-O commands, so we do too.
1113
llvm_target: watchos_sim_llvm_target(arch).into(),
1214
pointer_width: 64,
13-
data_layout: "e-m:o-i64:64-i128:128-n32:64-S128".into(),
15+
data_layout: cow!("e-m:o-i64:64-i128:128-n32:64-S128"),
1416
arch: arch.target_arch(),
1517
options: TargetOptions {
16-
features: "+neon,+fp-armv8,+apple-a7".into(),
18+
features: cow!("+neon,+fp-armv8,+apple-a7"),
1719
max_atomic_width: Some(128),
1820
frame_pointer: FramePointer::NonLeaf,
1921
..opts("watchos", arch)

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
use crate::abi::Endian;
2+
use crate::spec::cow;
3+
24
use crate::spec::{base, StackProbeType, Target, TargetOptions};
35

46
pub fn target() -> Target {
57
Target {
6-
llvm_target: "aarch64_be-unknown-linux-gnu".into(),
8+
llvm_target: cow!("aarch64_be-unknown-linux-gnu"),
79
pointer_width: 64,
8-
data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
9-
arch: "aarch64".into(),
10+
data_layout: cow!("E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"),
11+
arch: cow!("aarch64"),
1012
options: TargetOptions {
11-
features: "+v8a,+outline-atomics".into(),
13+
features: cow!("+v8a,+outline-atomics"),
1214
max_atomic_width: Some(128),
1315
stack_probes: StackProbeType::Inline,
14-
mcount: "\u{1}_mcount".into(),
16+
mcount: cow!("\u{1}_mcount"),
1517
endian: Endian::Big,
1618
..base::linux_gnu::opts()
1719
},

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
use crate::abi::Endian;
2+
use crate::spec::cow;
3+
24
use crate::spec::{base, StackProbeType, Target, TargetOptions};
35

46
pub fn target() -> Target {
57
let mut base = base::linux_gnu::opts();
68
base.max_atomic_width = Some(128);
79

810
Target {
9-
llvm_target: "aarch64_be-unknown-linux-gnu_ilp32".into(),
11+
llvm_target: cow!("aarch64_be-unknown-linux-gnu_ilp32"),
1012
pointer_width: 32,
11-
data_layout: "E-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
12-
arch: "aarch64".into(),
13+
data_layout: cow!("E-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"),
14+
arch: cow!("aarch64"),
1315
options: TargetOptions {
14-
abi: "ilp32".into(),
15-
features: "+v8a,+outline-atomics".into(),
16+
abi: cow!("ilp32"),
17+
features: cow!("+v8a,+outline-atomics"),
1618
stack_probes: StackProbeType::Inline,
17-
mcount: "\u{1}_mcount".into(),
19+
mcount: cow!("\u{1}_mcount"),
1820
endian: Endian::Big,
1921
..base
2022
},

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
use crate::abi::Endian;
2+
use crate::spec::cow;
3+
24
use crate::spec::{base, StackProbeType, Target, TargetOptions};
35

46
pub fn target() -> Target {
57
Target {
6-
llvm_target: "aarch64_be-unknown-netbsd".into(),
8+
llvm_target: cow!("aarch64_be-unknown-netbsd"),
79
pointer_width: 64,
8-
data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
9-
arch: "aarch64".into(),
10+
data_layout: cow!("E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"),
11+
arch: cow!("aarch64"),
1012
options: TargetOptions {
11-
mcount: "__mcount".into(),
13+
mcount: cow!("__mcount"),
1214
max_atomic_width: Some(128),
1315
stack_probes: StackProbeType::Inline,
1416
endian: Endian::Big,

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1+
use crate::spec::cow;
12
use crate::spec::{base, RelocModel, StackProbeType, Target, TargetOptions};
23

34
pub fn target() -> Target {
45
let base = base::solid::opts("asp3");
56
Target {
6-
llvm_target: "aarch64-unknown-none".into(),
7+
llvm_target: cow!("aarch64-unknown-none"),
78
pointer_width: 64,
8-
data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
9-
arch: "aarch64".into(),
9+
data_layout: cow!("e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"),
10+
arch: cow!("aarch64"),
1011
options: TargetOptions {
11-
linker: Some("aarch64-kmc-elf-gcc".into()),
12-
features: "+v8a,+neon,+fp-armv8".into(),
12+
linker: Some(cow!("aarch64-kmc-elf-gcc")),
13+
features: cow!("+v8a,+neon,+fp-armv8"),
1314
relocation_model: RelocModel::Static,
1415
disable_redzone: true,
1516
max_atomic_width: Some(128),

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
1+
use crate::spec::cow;
12
use crate::spec::{base, SanitizerSet, StackProbeType, Target, TargetOptions};
23

34
// See https://developer.android.com/ndk/guides/abis.html#arm64-v8a
45
// for target ABI requirements.
56

67
pub fn target() -> Target {
78
Target {
8-
llvm_target: "aarch64-linux-android".into(),
9+
llvm_target: cow!("aarch64-linux-android"),
910
pointer_width: 64,
10-
data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
11-
arch: "aarch64".into(),
11+
data_layout: cow!("e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"),
12+
arch: cow!("aarch64"),
1213
options: TargetOptions {
1314
max_atomic_width: Some(128),
1415
// As documented in https://developer.android.com/ndk/guides/cpu-features.html
1516
// the neon (ASIMD) and FP must exist on all android aarch64 targets.
16-
features: "+v8a,+neon,+fp-armv8".into(),
17+
features: cow!("+v8a,+neon,+fp-armv8"),
1718
stack_probes: StackProbeType::Inline,
1819
supported_sanitizers: SanitizerSet::CFI
1920
| SanitizerSet::HWADDRESS

0 commit comments

Comments
 (0)