Skip to content

Commit 59bc7b4

Browse files
authored
Merge pull request #18789 from Veykril/push-sypxzqsvmzzp
fix: Fix invalid `-O` flag used by cfg discovery
2 parents 90b724a + fb2ca58 commit 59bc7b4

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

Diff for: crates/project-model/src/toolchain_info/rustc_cfg.rs

+23-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,26 @@ pub fn get(
2424
}
2525
};
2626

27-
let rustc_cfgs = rustc_cfgs.lines().map(crate::parse_cfg).collect::<Result<Vec<_>, _>>();
27+
// These are unstable but the standard libraries gate on them.
28+
let unstable = vec![
29+
r#"target_has_atomic_equal_alignment="8""#,
30+
r#"target_has_atomic_equal_alignment="16""#,
31+
r#"target_has_atomic_equal_alignment="32""#,
32+
r#"target_has_atomic_equal_alignment="64""#,
33+
r#"target_has_atomic_equal_alignment="128""#,
34+
r#"target_has_atomic_equal_alignment="ptr""#,
35+
r#"target_has_atomic_load_store"#,
36+
r#"target_has_atomic_load_store="8""#,
37+
r#"target_has_atomic_load_store="16""#,
38+
r#"target_has_atomic_load_store="32""#,
39+
r#"target_has_atomic_load_store="64""#,
40+
r#"target_has_atomic_load_store="128""#,
41+
r#"target_has_atomic_load_store="ptr""#,
42+
r#"target_thread_local"#,
43+
r#"target_has_atomic"#,
44+
];
45+
let rustc_cfgs =
46+
rustc_cfgs.lines().chain(unstable).map(crate::parse_cfg).collect::<Result<Vec<_>, _>>();
2847
match rustc_cfgs {
2948
Ok(rustc_cfgs) => {
3049
tracing::debug!(?rustc_cfgs, "rustc cfgs found");
@@ -42,13 +61,14 @@ fn rustc_print_cfg(
4261
extra_env: &FxHashMap<String, String>,
4362
config: QueryConfig<'_>,
4463
) -> anyhow::Result<String> {
45-
const RUSTC_ARGS: [&str; 3] = ["--print", "cfg", "-O"];
64+
const RUSTC_ARGS: [&str; 2] = ["--print", "cfg"];
4665
let (sysroot, current_dir) = match config {
4766
QueryConfig::Cargo(sysroot, cargo_toml) => {
4867
let mut cmd = sysroot.tool(Tool::Cargo, cargo_toml.parent());
4968
cmd.envs(extra_env);
5069
cmd.env("RUSTC_BOOTSTRAP", "1");
5170
cmd.args(["rustc", "-Z", "unstable-options"]).args(RUSTC_ARGS);
71+
cmd.args(["--", "-O"]);
5272
if let Some(target) = target {
5373
cmd.args(["--target", target]);
5474
}
@@ -70,6 +90,7 @@ fn rustc_print_cfg(
7090
let mut cmd = sysroot.tool(Tool::Rustc, current_dir);
7191
cmd.envs(extra_env);
7292
cmd.args(RUSTC_ARGS);
93+
cmd.arg("-O");
7394
if let Some(target) = target {
7495
cmd.args(["--target", target]);
7596
}

0 commit comments

Comments
 (0)