Skip to content

Commit c576725

Browse files
Auto merge of #144443 - WaffleLapkin:integer-target-pointer-width, r=<try>
Make target pointer width in target json an integer try-job: x86_64-gnu-llvm-19-3
2 parents 5b9564a + ffe4f0c commit c576725

File tree

15 files changed

+25
-36
lines changed

15 files changed

+25
-36
lines changed

compiler/rustc_abi/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ pub enum TargetDataLayoutErrors<'a> {
315315
MissingAlignment { cause: &'a str },
316316
InvalidAlignment { cause: &'a str, err: AlignFromBytesError },
317317
InconsistentTargetArchitecture { dl: &'a str, target: &'a str },
318-
InconsistentTargetPointerWidth { pointer_size: u64, target: u32 },
318+
InconsistentTargetPointerWidth { pointer_size: u64, target: u16 },
319319
InvalidBitsSize { err: String },
320320
UnknownPointerSpecification { err: String },
321321
}

compiler/rustc_ast_ir/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ impl IntTy {
6969
})
7070
}
7171

72-
pub fn normalize(&self, target_width: u32) -> Self {
72+
pub fn normalize(&self, target_width: u16) -> Self {
7373
match self {
7474
IntTy::Isize => match target_width {
7575
16 => IntTy::I16,
@@ -148,7 +148,7 @@ impl UintTy {
148148
})
149149
}
150150

151-
pub fn normalize(&self, target_width: u32) -> Self {
151+
pub fn normalize(&self, target_width: u16) -> Self {
152152
match self {
153153
UintTy::Usize => match target_width {
154154
16 => UintTy::U16,

compiler/rustc_target/src/spec/json.rs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@ impl Target {
2525
let mut base = Target {
2626
llvm_target: json.llvm_target,
2727
metadata: Default::default(),
28-
pointer_width: json
29-
.target_pointer_width
30-
.parse()
31-
.map_err(|err| format!("invalid target-pointer-width: {err}"))?,
28+
pointer_width: json.target_pointer_width,
3229
data_layout: json.data_layout,
3330
arch: json.arch,
3431
options: Default::default(),
@@ -245,19 +242,17 @@ impl ToJson for Target {
245242
target.update_to_cli();
246243

247244
macro_rules! target_val {
248-
($attr:ident) => {{
249-
let name = (stringify!($attr)).replace("_", "-");
250-
d.insert(name, target.$attr.to_json());
245+
($attr:ident) => {
246+
target_val!($attr, (stringify!($attr)).replace("_", "-"))
247+
};
248+
($attr:ident, $json_name:expr) => {{
249+
let name = $json_name;
250+
d.insert(name.into(), target.$attr.to_json());
251251
}};
252252
}
253253

254254
macro_rules! target_option_val {
255-
($attr:ident) => {{
256-
let name = (stringify!($attr)).replace("_", "-");
257-
if default.$attr != target.$attr {
258-
d.insert(name, target.$attr.to_json());
259-
}
260-
}};
255+
($attr:ident) => {{ target_option_val!($attr, (stringify!($attr)).replace("_", "-")) }};
261256
($attr:ident, $json_name:expr) => {{
262257
let name = $json_name;
263258
if default.$attr != target.$attr {
@@ -290,7 +285,7 @@ impl ToJson for Target {
290285

291286
target_val!(llvm_target);
292287
target_val!(metadata);
293-
d.insert("target-pointer-width".to_string(), self.pointer_width.to_string().to_json());
288+
target_val!(pointer_width, "target-pointer-width");
294289
target_val!(arch);
295290
target_val!(data_layout);
296291

@@ -463,7 +458,7 @@ struct TargetSpecJsonMetadata {
463458
#[serde(deny_unknown_fields)]
464459
struct TargetSpecJson {
465460
llvm_target: StaticCow<str>,
466-
target_pointer_width: String,
461+
target_pointer_width: u16,
467462
data_layout: StaticCow<str>,
468463
arch: StaticCow<str>,
469464

compiler/rustc_target/src/spec/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2311,7 +2311,7 @@ pub struct Target {
23112311
/// Used for generating target documentation.
23122312
pub metadata: TargetMetadata,
23132313
/// Number of bits in a pointer. Influences the `target_pointer_width` `cfg` variable.
2314-
pub pointer_width: u32,
2314+
pub pointer_width: u16,
23152315
/// Architecture to use for ABI considerations. Valid options include: "x86",
23162316
/// "x86_64", "arm", "aarch64", "mips", "powerpc", "powerpc64", and others.
23172317
pub arch: StaticCow<str>,

src/tools/compiletest/src/common.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use std::sync::OnceLock;
66
use build_helper::git::GitConfig;
77
use camino::{Utf8Path, Utf8PathBuf};
88
use semver::Version;
9-
use serde::de::{Deserialize, Deserializer, Error as _};
109

1110
use crate::executor::{ColorConfig, OutputFormat};
1211
use crate::fatal;
@@ -1064,7 +1063,7 @@ pub struct TargetCfg {
10641063
pub(crate) abi: String,
10651064
#[serde(rename = "target-family", default)]
10661065
pub(crate) families: Vec<String>,
1067-
#[serde(rename = "target-pointer-width", deserialize_with = "serde_parse_u32")]
1066+
#[serde(rename = "target-pointer-width")]
10681067
pub(crate) pointer_width: u32,
10691068
#[serde(rename = "target-endian", default)]
10701069
endian: Endian,
@@ -1172,11 +1171,6 @@ fn rustc_output(config: &Config, args: &[&str], envs: HashMap<String, String>) -
11721171
String::from_utf8(output.stdout).unwrap()
11731172
}
11741173

1175-
fn serde_parse_u32<'de, D: Deserializer<'de>>(deserializer: D) -> Result<u32, D::Error> {
1176-
let string = String::deserialize(deserializer)?;
1177-
string.parse().map_err(D::Error::custom)
1178-
}
1179-
11801174
#[derive(Debug, Clone)]
11811175
pub struct TestPaths {
11821176
pub file: Utf8PathBuf, // e.g., compile-test/foo/bar/baz.rs

tests/run-make/rust-lld-custom-target/custom-target.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,5 @@
5353
"target-family": [
5454
"unix"
5555
],
56-
"target-pointer-width": "64"
56+
"target-pointer-width": 64
5757
}

tests/run-make/rustdoc-target-spec-json-path/target.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,5 @@
3333
"thread"
3434
],
3535
"target-family": "unix",
36-
"target-pointer-width": "64"
36+
"target-pointer-width": 64
3737
}

tests/run-make/target-specs/endianness-mismatch.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"linker-flavor": "gcc",
55
"llvm-target": "x86_64-unknown-linux-gnu",
66
"target-endian": "big",
7-
"target-pointer-width": "64",
7+
"target-pointer-width": 64,
88
"arch": "x86_64",
99
"os": "linux"
1010
}

tests/run-make/target-specs/mismatching-data-layout.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"arch": "x86_64",
33
"data-layout": "e-m:e-i64:16:32:64",
44
"llvm-target": "x86_64-unknown-unknown-gnu",
5-
"target-pointer-width": "64"
5+
"target-pointer-width": 64
66
}

tests/run-make/target-specs/my-awesome-platform.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"linker-flavor": "gcc",
44
"llvm-target": "i686-unknown-linux-gnu",
55
"target-endian": "little",
6-
"target-pointer-width": "32",
6+
"target-pointer-width": 32,
77
"arch": "x86",
88
"os": "linux"
99
}

0 commit comments

Comments
 (0)