Skip to content

Commit c4f2227

Browse files
committed
abi layout: assert member offsets of vectors are as expected
1 parent ccf3a3e commit c4f2227

File tree

1 file changed

+21
-0
lines changed
  • crates/rustc_codegen_spirv/src

1 file changed

+21
-0
lines changed

crates/rustc_codegen_spirv/src/abi.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,6 +1050,27 @@ fn trans_glam_like_struct<'tcx>(
10501050
.span_err(span, format!("{err_attr_name} must have 2, 3 or 4 members"))
10511051
})?;
10521052

1053+
for i in 0..ty.fields.count() {
1054+
let expected = element.size.checked_mul(i as u64, cx).unwrap();
1055+
let actual = ty.fields.offset(i);
1056+
if actual != expected {
1057+
let name: &str = adt
1058+
.non_enum_variant()
1059+
.fields
1060+
.get(FieldIdx::from(i))
1061+
.unwrap()
1062+
.name
1063+
.as_str();
1064+
tcx.dcx().span_fatal(
1065+
span,
1066+
format!(
1067+
"Unexpected layout for {err_attr_name} annotated struct: \
1068+
Expected member `{name}` at offset {expected:?}, but was at {actual:?}"
1069+
),
1070+
)
1071+
}
1072+
}
1073+
10531074
Ok((element_word, count))
10541075
} else {
10551076
Err(tcx

0 commit comments

Comments
 (0)