mirror of
https://github.com/EmbarkStudios/rust-gpu.git
synced 2024-11-25 08:14:12 +00:00
rustup update to 2021-05-17 (#621)
This commit is contained in:
parent
e76247213c
commit
ca988f95de
@ -518,7 +518,9 @@ impl<'a, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'tcx> {
|
|||||||
fn set_span(&mut self, span: Span) {
|
fn set_span(&mut self, span: Span) {
|
||||||
self.current_span = Some(span);
|
self.current_span = Some(span);
|
||||||
let loc = self.cx.tcx.sess.source_map().lookup_char_pos(span.lo());
|
let loc = self.cx.tcx.sess.source_map().lookup_char_pos(span.lo());
|
||||||
let file = self.builder.def_string(format!("{}", loc.file.name));
|
let file = self
|
||||||
|
.builder
|
||||||
|
.def_string(format!("{}", loc.file.name.prefer_remapped()));
|
||||||
self.emit()
|
self.emit()
|
||||||
.line(file, loc.line as u32, loc.col_display as u32);
|
.line(file, loc.line as u32, loc.col_display as u32);
|
||||||
}
|
}
|
||||||
|
@ -747,7 +747,7 @@ impl<'cx, 'tcx> Builder<'cx, 'tcx> {
|
|||||||
token: Token<'a, 'cx, 'tcx>,
|
token: Token<'a, 'cx, 'tcx>,
|
||||||
) -> Option<OutRegister<'a>> {
|
) -> Option<OutRegister<'a>> {
|
||||||
match token {
|
match token {
|
||||||
Token::Word(word) => match word.strip_prefix("%") {
|
Token::Word(word) => match word.strip_prefix('%') {
|
||||||
Some(id) => Some(OutRegister::Regular({
|
Some(id) => Some(OutRegister::Regular({
|
||||||
let num = *id_map.entry(id).or_insert_with(|| self.emit().id());
|
let num = *id_map.entry(id).or_insert_with(|| self.emit().id());
|
||||||
if !defined_ids.insert(num) {
|
if !defined_ids.insert(num) {
|
||||||
@ -835,7 +835,7 @@ impl<'cx, 'tcx> Builder<'cx, 'tcx> {
|
|||||||
token: Token<'a, 'cx, 'tcx>,
|
token: Token<'a, 'cx, 'tcx>,
|
||||||
) -> Option<Word> {
|
) -> Option<Word> {
|
||||||
match token {
|
match token {
|
||||||
Token::Word(word) => match word.strip_prefix("%") {
|
Token::Word(word) => match word.strip_prefix('%') {
|
||||||
Some(id) => Some(*id_map.entry(id).or_insert_with(|| self.emit().id())),
|
Some(id) => Some(*id_map.entry(id).or_insert_with(|| self.emit().id())),
|
||||||
None => {
|
None => {
|
||||||
self.err("expected ID");
|
self.err("expected ID");
|
||||||
|
@ -212,10 +212,13 @@ impl<'tcx> PreDefineMethods<'tcx> for CodegenCx<'tcx> {
|
|||||||
let linkage = match linkage {
|
let linkage = match linkage {
|
||||||
Linkage::External => Some(LinkageType::Export),
|
Linkage::External => Some(LinkageType::Export),
|
||||||
Linkage::Internal => None,
|
Linkage::Internal => None,
|
||||||
other => self.tcx.sess.fatal(&format!(
|
other => {
|
||||||
"TODO: Linkage type not supported yet: {:?}",
|
self.tcx.sess.err(&format!(
|
||||||
other
|
"TODO: Linkage type {:?} not supported yet for static var symbol {}",
|
||||||
)),
|
other, symbol_name
|
||||||
|
));
|
||||||
|
None
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let g = self.declare_global(span, spvty);
|
let g = self.declare_global(span, spvty);
|
||||||
@ -231,15 +234,21 @@ impl<'tcx> PreDefineMethods<'tcx> for CodegenCx<'tcx> {
|
|||||||
instance: Instance<'tcx>,
|
instance: Instance<'tcx>,
|
||||||
linkage: Linkage,
|
linkage: Linkage,
|
||||||
_visibility: Visibility,
|
_visibility: Visibility,
|
||||||
_symbol_name: &str,
|
symbol_name: &str,
|
||||||
) {
|
) {
|
||||||
let linkage2 = match linkage {
|
let linkage2 = match linkage {
|
||||||
Linkage::External => Some(LinkageType::Export),
|
// super sketchy hack: memcpy, memmove, memset, memcmp, and bcmp in the
|
||||||
|
// compiler_builtins crate use the WeakAny linkage type. Treat it as actually External
|
||||||
|
// linkage because we know there's only one of them.
|
||||||
|
Linkage::External | Linkage::WeakAny => Some(LinkageType::Export),
|
||||||
Linkage::Internal => None,
|
Linkage::Internal => None,
|
||||||
other => self.tcx.sess.fatal(&format!(
|
other => {
|
||||||
"TODO: Linkage type not supported yet: {:?}",
|
self.tcx.sess.err(&format!(
|
||||||
other
|
"TODO: Linkage type {:?} not supported yet for function symbol {}",
|
||||||
)),
|
other, symbol_name
|
||||||
|
));
|
||||||
|
None
|
||||||
|
}
|
||||||
};
|
};
|
||||||
let declared = self.declare_fn_ext(instance, linkage2);
|
let declared = self.declare_fn_ext(instance, linkage2);
|
||||||
|
|
||||||
|
@ -14,12 +14,13 @@ use crate::target::SpirvTarget;
|
|||||||
|
|
||||||
use rspirv::dr::{Module, Operand};
|
use rspirv::dr::{Module, Operand};
|
||||||
use rspirv::spirv::{AddressingModel, Decoration, LinkageType, Op, Word};
|
use rspirv::spirv::{AddressingModel, Decoration, LinkageType, Op, Word};
|
||||||
|
use rustc_ast::ast::{InlineAsmOptions, InlineAsmTemplatePiece};
|
||||||
use rustc_codegen_ssa::mir::debuginfo::{FunctionDebugContext, VariableKind};
|
use rustc_codegen_ssa::mir::debuginfo::{FunctionDebugContext, VariableKind};
|
||||||
use rustc_codegen_ssa::traits::{
|
use rustc_codegen_ssa::traits::{
|
||||||
AsmMethods, BackendTypes, CoverageInfoMethods, DebugInfoMethods, MiscMethods,
|
AsmMethods, BackendTypes, CoverageInfoMethods, DebugInfoMethods, GlobalAsmOperandRef,
|
||||||
|
MiscMethods,
|
||||||
};
|
};
|
||||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||||
use rustc_hir::GlobalAsm;
|
|
||||||
use rustc_middle::mir::mono::CodegenUnit;
|
use rustc_middle::mir::mono::CodegenUnit;
|
||||||
use rustc_middle::mir::Body;
|
use rustc_middle::mir::Body;
|
||||||
use rustc_middle::ty::layout::{HasParamEnv, HasTyCtxt};
|
use rustc_middle::ty::layout::{HasParamEnv, HasTyCtxt};
|
||||||
@ -616,7 +617,13 @@ impl<'tcx> CoverageInfoMethods<'tcx> for CodegenCx<'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> AsmMethods for CodegenCx<'tcx> {
|
impl<'tcx> AsmMethods for CodegenCx<'tcx> {
|
||||||
fn codegen_global_asm(&self, _ga: &GlobalAsm) {
|
fn codegen_global_asm(
|
||||||
|
&self,
|
||||||
|
_template: &[InlineAsmTemplatePiece],
|
||||||
|
_operands: &[GlobalAsmOperandRef],
|
||||||
|
_options: InlineAsmOptions,
|
||||||
|
_line_spans: &[Span],
|
||||||
|
) {
|
||||||
todo!()
|
todo!()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,7 @@ impl SerializedSpan {
|
|||||||
file: match &file.name {
|
file: match &file.name {
|
||||||
// We can only support real files, not "synthetic" ones (which
|
// We can only support real files, not "synthetic" ones (which
|
||||||
// are almost never exposed to the compiler backend anyway).
|
// are almost never exposed to the compiler backend anyway).
|
||||||
FileName::Real(real_name) => real_name.local_path().to_path_buf(),
|
FileName::Real(real_name) => real_name.local_path()?.to_path_buf(),
|
||||||
_ => return None,
|
_ => return None,
|
||||||
},
|
},
|
||||||
hash: file.src_hash.into(),
|
hash: file.src_hash.into(),
|
||||||
|
@ -328,6 +328,12 @@ impl CodegenBackend for SpirvCodegenBackend {
|
|||||||
Box::new(rustc_codegen_ssa::base::codegen_crate(
|
Box::new(rustc_codegen_ssa::base::codegen_crate(
|
||||||
Self,
|
Self,
|
||||||
tcx,
|
tcx,
|
||||||
|
tcx.sess
|
||||||
|
.opts
|
||||||
|
.cg
|
||||||
|
.target_cpu
|
||||||
|
.clone()
|
||||||
|
.unwrap_or_else(|| tcx.sess.target.cpu.clone()),
|
||||||
metadata,
|
metadata,
|
||||||
need_metadata_module,
|
need_metadata_module,
|
||||||
))
|
))
|
||||||
@ -472,7 +478,7 @@ impl WriteBackendMethods for SpirvCodegenBackend {
|
|||||||
_: &ModuleCodegen<Self::Module>,
|
_: &ModuleCodegen<Self::Module>,
|
||||||
_: &ModuleConfig,
|
_: &ModuleConfig,
|
||||||
_: bool,
|
_: bool,
|
||||||
) {
|
) -> Result<(), FatalError> {
|
||||||
todo!()
|
todo!()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,10 +86,16 @@ fn link_rlib(sess: &Session, codegen_results: &CodegenResults, out_filename: &Pa
|
|||||||
}
|
}
|
||||||
for lib in codegen_results.crate_info.used_libraries.iter() {
|
for lib in codegen_results.crate_info.used_libraries.iter() {
|
||||||
match lib.kind {
|
match lib.kind {
|
||||||
NativeLibKind::StaticBundle => {}
|
NativeLibKind::Static {
|
||||||
NativeLibKind::StaticNoBundle
|
bundle: None | Some(true),
|
||||||
| NativeLibKind::Dylib
|
..
|
||||||
| NativeLibKind::Framework
|
} => {}
|
||||||
|
NativeLibKind::Static {
|
||||||
|
bundle: Some(false),
|
||||||
|
..
|
||||||
|
}
|
||||||
|
| NativeLibKind::Dylib { .. }
|
||||||
|
| NativeLibKind::Framework { .. }
|
||||||
| NativeLibKind::RawDylib
|
| NativeLibKind::RawDylib
|
||||||
| NativeLibKind::Unspecified => continue,
|
| NativeLibKind::Unspecified => continue,
|
||||||
}
|
}
|
||||||
@ -335,15 +341,18 @@ fn add_upstream_native_libraries(
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
match lib.kind {
|
match lib.kind {
|
||||||
NativeLibKind::Dylib | NativeLibKind::Unspecified => sess.fatal(&format!(
|
NativeLibKind::Dylib { .. } | NativeLibKind::Unspecified => sess.fatal(&format!(
|
||||||
"TODO: dylib nativelibkind not supported yet: {}",
|
"TODO: dylib nativelibkind not supported yet: {}",
|
||||||
name
|
name
|
||||||
)),
|
)),
|
||||||
NativeLibKind::Framework => sess.fatal(&format!(
|
NativeLibKind::Framework { .. } => sess.fatal(&format!(
|
||||||
"TODO: framework nativelibkind not supported yet: {}",
|
"TODO: framework nativelibkind not supported yet: {}",
|
||||||
name
|
name
|
||||||
)),
|
)),
|
||||||
NativeLibKind::StaticNoBundle => {
|
NativeLibKind::Static {
|
||||||
|
bundle: Some(false),
|
||||||
|
..
|
||||||
|
} => {
|
||||||
if data[cnum.as_usize() - 1] == Linkage::Static {
|
if data[cnum.as_usize() - 1] == Linkage::Static {
|
||||||
sess.fatal(&format!(
|
sess.fatal(&format!(
|
||||||
"TODO: staticnobundle nativelibkind not supported yet: {}",
|
"TODO: staticnobundle nativelibkind not supported yet: {}",
|
||||||
@ -351,7 +360,10 @@ fn add_upstream_native_libraries(
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NativeLibKind::StaticBundle => {}
|
NativeLibKind::Static {
|
||||||
|
bundle: None | Some(true),
|
||||||
|
..
|
||||||
|
} => {}
|
||||||
NativeLibKind::RawDylib => {
|
NativeLibKind::RawDylib => {
|
||||||
sess.fatal(&format!("raw_dylib feature not yet implemented: {}", name))
|
sess.fatal(&format!("raw_dylib feature not yet implemented: {}", name))
|
||||||
}
|
}
|
||||||
|
@ -5,5 +5,5 @@
|
|||||||
# to the user in the error, instead of "error: invalid channel name '[toolchain]'".
|
# to the user in the error, instead of "error: invalid channel name '[toolchain]'".
|
||||||
|
|
||||||
[toolchain]
|
[toolchain]
|
||||||
channel = "nightly-2021-04-25"
|
channel = "nightly-2021-05-17"
|
||||||
components = ["rust-src", "rustc-dev", "llvm-tools-preview"]
|
components = ["rust-src", "rustc-dev", "llvm-tools-preview"]
|
||||||
|
@ -7,7 +7,7 @@ OpLine %9 7 35
|
|||||||
%10 = OpLoad %11 %4
|
%10 = OpLoad %11 %4
|
||||||
OpLine %9 7 13
|
OpLine %9 7 13
|
||||||
OpStore %8 %10
|
OpStore %8 %10
|
||||||
OpLine %12 886 8
|
OpLine %12 878 8
|
||||||
OpCopyMemory %6 %8
|
OpCopyMemory %6 %8
|
||||||
OpLine %9 8 1
|
OpLine %9 8 1
|
||||||
OpReturn
|
OpReturn
|
||||||
|
@ -7,7 +7,7 @@ OpLine %9 7 37
|
|||||||
%10 = OpLoad %11 %4
|
%10 = OpLoad %11 %4
|
||||||
OpLine %12 1012 17
|
OpLine %12 1012 17
|
||||||
OpStore %8 %10
|
OpStore %8 %10
|
||||||
OpLine %13 886 8
|
OpLine %13 878 8
|
||||||
OpCopyMemory %6 %8
|
OpCopyMemory %6 %8
|
||||||
OpLine %9 8 1
|
OpLine %9 8 1
|
||||||
OpReturn
|
OpReturn
|
||||||
|
@ -25,7 +25,7 @@ error: entry parameter type must be by-reference: `&spirv_std::image::Image<f32,
|
|||||||
15 | pub fn issue_585(invalid: Image!(2D, type=f32)) {}
|
15 | pub fn issue_585(invalid: Image!(2D, type=f32)) {}
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `Image` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: aborting due to 2 previous errors; 1 warning emitted
|
error: aborting due to 2 previous errors; 1 warning emitted
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user