diff --git a/crates/rustc_codegen_spirv/src/symbols.rs b/crates/rustc_codegen_spirv/src/symbols.rs index 8c53ff40ab..4dfef5b4d3 100644 --- a/crates/rustc_codegen_spirv/src/symbols.rs +++ b/crates/rustc_codegen_spirv/src/symbols.rs @@ -1,7 +1,7 @@ use crate::attr::{Entry, ExecutionModeExtra, IntrinsicType, SpecConstant, SpirvAttribute}; use crate::builder::libm_intrinsics; use rspirv::spirv::{BuiltIn, ExecutionMode, ExecutionModel, StorageClass}; -use rustc_ast::ast::{LitIntType, LitKind, MetaItemInner, MetaItemLit}; +use rustc_ast::ast::{LitKind, MetaItemInner, MetaItemLit}; use rustc_data_structures::fx::FxHashMap; use rustc_hir::Attribute; use rustc_span::Span; @@ -563,7 +563,7 @@ fn parse_attr_int_value(arg: &MetaItemInner) -> Result { }; match arg.name_value_literal() { Some(&MetaItemLit { - kind: LitKind::Int(x, LitIntType::Unsuffixed), + kind: LitKind::Int(x, ..), .. }) if x <= u32::MAX as u128 => Ok(x.get() as u32), _ => Err((arg.span, "attribute value must be integer".to_string())), @@ -581,7 +581,7 @@ fn parse_local_size_attr(arg: &MetaItemInner) -> Result<[u32; 3], ParseAttrError for (idx, lit) in tuple.iter().enumerate() { match lit { MetaItemInner::Lit(MetaItemLit { - kind: LitKind::Int(x, LitIntType::Unsuffixed), + kind: LitKind::Int(x, ..), .. }) if *x <= u32::MAX as u128 => local_size[idx] = x.get() as u32, _ => return Err((lit.span(), "must be a u32 literal".to_string())), diff --git a/tests/compiletests/ui/storage_class/int_lit_bindings.rs b/tests/compiletests/ui/storage_class/int_lit_bindings.rs new file mode 100644 index 0000000000..8427941090 --- /dev/null +++ b/tests/compiletests/ui/storage_class/int_lit_bindings.rs @@ -0,0 +1,7 @@ +// build-pass +use spirv_std::spirv; + +#[spirv(compute(threads(1, 2u32, 3i128)))] +pub fn main(#[spirv(storage_buffer, descriptor_set = 42u8, binding = 69u64)] value: &mut f32) { + *value = *value + 1.; +}