Skip to content

Commit

Permalink
Generate spans covering the entire instruction.
Browse files Browse the repository at this point in the history
Granted, there is pre-existing code in the SPIR-V front end that gets
this wrong, but:

It doesn't make sense to read `self.data_offset`, and then immediately
pass that to `self.span_from_with_op`. The point of that function is
to make the span cover the entire instruction, operands included.
  • Loading branch information
jimblandy authored and schell committed Sep 16, 2024
1 parent 6c83ac9 commit 41f0b63
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions naga/src/front/spv/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1363,13 +1363,13 @@ impl<I: Iterator<Item = u32>> Frontend<I> {
) -> Result<(), Error> {
inst.expect(7)?;
let start = self.data_offset;
let span = self.span_from_with_op(start);
let result_type_id = self.next()?;
let result_id = self.next()?;
let pointer_id = self.next()?;
let _scope_id = self.next()?;
let _memory_semantics_id = self.next()?;
let value_id = self.next()?;
let span = self.span_from_with_op(start);

let (p_lexp_handle, p_base_ty_handle) =
self.get_exp_and_base_ty_handles(pointer_id, ctx, emitter, block, body_idx)?;
Expand Down Expand Up @@ -4078,12 +4078,12 @@ impl<I: Iterator<Item = u32>> Frontend<I> {
Op::AtomicLoad => {
inst.expect(6)?;
let start = self.data_offset;
let span = self.span_from_with_op(start);
let result_type_id = self.next()?;
let result_id = self.next()?;
let pointer_id = self.next()?;
let _scope_id = self.next()?;
let _memory_semantics_id = self.next()?;
let span = self.span_from_with_op(start);

log::trace!("\t\t\tlooking up expr {:?}", pointer_id);
let p_lexp_handle =
Expand All @@ -4110,11 +4110,11 @@ impl<I: Iterator<Item = u32>> Frontend<I> {
Op::AtomicStore => {
inst.expect(5)?;
let start = self.data_offset;
let span = self.span_from_with_op(start);
let pointer_id = self.next()?;
let _scope_id = self.next()?;
let _memory_semantics_id = self.next()?;
let value_id = self.next()?;
let span = self.span_from_with_op(start);

log::trace!("\t\t\tlooking up pointer expr {:?}", pointer_id);
let p_lexp_handle =
Expand All @@ -4140,12 +4140,12 @@ impl<I: Iterator<Item = u32>> Frontend<I> {
Op::AtomicIIncrement | Op::AtomicIDecrement => {
inst.expect(6)?;
let start = self.data_offset;
let span = self.span_from_with_op(start);
let result_type_id = self.next()?;
let result_id = self.next()?;
let pointer_id = self.next()?;
let _scope_id = self.next()?;
let _memory_semantics_id = self.next()?;
let span = self.span_from_with_op(start);

let (p_exp_h, p_base_ty_h) = self.get_exp_and_base_ty_handles(
pointer_id,
Expand Down Expand Up @@ -4236,12 +4236,12 @@ impl<I: Iterator<Item = u32>> Frontend<I> {
// literal "true"
inst.expect(6)?;
let start = self.data_offset;
let span = self.span_from_with_op(start);
let result_type_id = self.next()?;
let result_id = self.next()?;
let pointer_id = self.next()?;
let _scope_id = self.next()?;
let _memory_semantics_id = self.next()?;
let span = self.span_from_with_op(start);

let (pointer, pointer_ty) = self.get_exp_and_base_ty_handles(
pointer_id,
Expand Down Expand Up @@ -4288,10 +4288,10 @@ impl<I: Iterator<Item = u32>> Frontend<I> {
// Atomic flag clear is essentially an atomic store of a literal "false"
inst.expect(4)?;
let start = self.data_offset;
let span = self.span_from_with_op(start);
let pointer_id = self.next()?;
let _scope_id = self.next()?;
let _memory_id = self.next()?;
let span = self.span_from_with_op(start);

let pointer =
get_expr_handle!(pointer_id, self.lookup_expression.lookup(pointer_id)?);
Expand Down

0 comments on commit 41f0b63

Please sign in to comment.