Skip to content

Commit 6021236

Browse files
committed
The env of rustc_session::Session's target options is an enum now. Arch::Unknown was renamed Arch::Other
1 parent c11e5d0 commit 6021236

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

crates/rustc_codegen_spirv/src/link.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ use std::io::{BufWriter, Read};
3030
use std::iter;
3131
use std::path::{Path, PathBuf};
3232
use std::sync::Arc;
33+
use std::str::FromStr;
3334

3435
pub fn link(
3536
sess: &Session,
@@ -334,8 +335,10 @@ fn do_spirv_opt(
334335
error,
335336
opt::{self, Optimizer},
336337
};
338+
use spirv_tools::TargetEnv;
337339

338-
let mut optimizer = opt::create(sess.target.options.env.parse().ok());
340+
let target_env = TargetEnv::from_str(sess.target.options.env.desc()).ok();
341+
let mut optimizer = opt::create(target_env);
339342

340343
match sess.opts.optimize {
341344
OptLevel::No => {}
@@ -395,9 +398,10 @@ fn do_spirv_val(
395398
filename: &Path,
396399
options: spirv_tools::val::ValidatorOptions,
397400
) {
398-
use spirv_tools::val::{self, Validator};
401+
use spirv_tools::{TargetEnv, val::{self, Validator}};
399402

400-
let validator = val::create(sess.target.options.env.parse().ok());
403+
let target_env = TargetEnv::from_str(sess.target.options.env.desc()).ok();
404+
let validator = val::create(target_env);
401405

402406
if let Err(e) = validator.validate(spv_binary, Some(options)) {
403407
let mut err = sess.dcx().struct_err(e.to_string());

crates/rustc_codegen_spirv/src/target.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use rspirv::spirv::MemoryModel;
2-
use rustc_target::spec::{Cc, LinkerFlavor, PanicStrategy, Target, TargetOptions, Arch};
2+
use rustc_target::spec::{Arch, Cc, LinkerFlavor, PanicStrategy, Target, TargetOptions};
33
use spirv_tools::TargetEnv;
44

55
const ARCH: &str = "spirv";
@@ -61,10 +61,13 @@ impl SpirvTarget {
6161
o.emit_debug_gdb_scripts = false;
6262
o.linker_flavor = LinkerFlavor::Unix(Cc::No);
6363
o.panic_strategy = PanicStrategy::Abort;
64-
o.env = self.env.to_string().into();
65-
o.vendor = self.vendor.clone().into();
64+
// FIXME: this is problematic I believe. Used to be a `Cow` but is now an enum.
65+
o.env = rustc_target::spec::Env::Unspecified;
6666
// TODO: Investigate if main_needs_argc_argv is useful (for building exes)
6767
o.main_needs_argc_argv = false;
68+
69+
// FIXME: Should use `o.is_like_gpu = true;`? This changed in https://github.com/rust-lang/rust/pull/148760
70+
6871
o
6972
}
7073

@@ -74,7 +77,7 @@ impl SpirvTarget {
7477
metadata: Default::default(),
7578
pointer_width: 32,
7679
data_layout: "e-m:e-p:32:32:32-i64:64-n8:16:32:64".into(),
77-
arch: Arch::Unknown(ARCH.into()),
80+
arch: Arch::Other(ARCH.into()),
7881
options: self.init_target_opts(),
7982
}
8083
}

0 commit comments

Comments
 (0)