Skip to content

Commit 3292664

Browse files
committed
adjust target declaration, conflicts with target declaration refactor
see #491
1 parent f5bf006 commit 3292664

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

crates/rustc_codegen_spirv/src/link.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@ use rustc_session::config::{
2525
};
2626
use rustc_session::output::{check_file_is_writeable, invalid_output_for_target, out_filename};
2727
use rustc_span::Symbol;
28+
use spirv_tools::TargetEnv;
2829
use std::collections::BTreeMap;
2930
use std::ffi::{CString, OsStr};
3031
use std::fs::File;
3132
use std::io::{BufWriter, Read};
3233
use std::iter;
3334
use std::path::{Path, PathBuf};
35+
use std::str::FromStr;
3436
use std::sync::Arc;
3537

3638
pub fn link(
@@ -337,7 +339,8 @@ fn do_spirv_opt(
337339
opt::{self, Optimizer},
338340
};
339341

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

342345
match sess.opts.optimize {
343346
OptLevel::No => {}
@@ -399,7 +402,8 @@ fn do_spirv_val(
399402
) {
400403
use spirv_tools::val::{self, Validator};
401404

402-
let validator = val::create(sess.target.options.env.parse().ok());
405+
let target_env = TargetEnv::from_str(sess.target.options.env.desc()).ok();
406+
let validator = val::create(target_env);
403407

404408
if let Err(e) = validator.validate(spv_binary, Some(options)) {
405409
let mut err = sess.dcx().struct_err(e.to_string());
@@ -498,7 +502,7 @@ fn add_upstream_native_libraries(
498502
fn relevant_lib(sess: &Session, lib: &NativeLib) -> bool {
499503
match lib.cfg {
500504
Some(ref cfg) => {
501-
eval_config_entry(sess, cfg, CRATE_NODE_ID, None, ShouldEmit::ErrorsAndLints).as_bool()
505+
eval_config_entry(sess, cfg, CRATE_NODE_ID, ShouldEmit::ErrorsAndLints).as_bool()
502506
}
503507
None => true,
504508
}

crates/rustc_codegen_spirv/src/target.rs

Lines changed: 5 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};
2+
use rustc_target::spec::{Arch, Cc, Env, LinkerFlavor, PanicStrategy, Target, TargetOptions};
33
use spirv_tools::TargetEnv;
44

55
const ARCH: &str = "spirv";
@@ -61,8 +61,9 @@ 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+
o.env = Env::Other(self.env.to_string().into());
65+
// Note(@firestar99): not sure if this does anything
66+
o.is_like_gpu = true;
6667
// TODO: Investigate if main_needs_argc_argv is useful (for building exes)
6768
o.main_needs_argc_argv = false;
6869
o
@@ -74,7 +75,7 @@ impl SpirvTarget {
7475
metadata: Default::default(),
7576
pointer_width: 32,
7677
data_layout: "e-m:e-p:32:32:32-i64:64-n8:16:32:64".into(),
77-
arch: ARCH.into(),
78+
arch: Arch::Other(ARCH.into()),
7879
options: self.init_target_opts(),
7980
}
8081
}

0 commit comments

Comments
 (0)