Skip to content

Commit 9dc9257

Browse files
Firestar99eddyb
authored andcommitted
abi layout: assert member offsets of vectors are as expected
1 parent adf6ee9 commit 9dc9257

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
@@ -1059,6 +1059,27 @@ fn trans_glam_like_struct<'tcx>(
10591059
.span_err(span, format!("{err_attr_name} must have 2, 3 or 4 members"))
10601060
})?;
10611061

1062+
for i in 0..ty.fields.count() {
1063+
let expected = element.size.checked_mul(i as u64, cx).unwrap();
1064+
let actual = ty.fields.offset(i);
1065+
if actual != expected {
1066+
let name: &str = adt
1067+
.non_enum_variant()
1068+
.fields
1069+
.get(FieldIdx::from(i))
1070+
.unwrap()
1071+
.name
1072+
.as_str();
1073+
tcx.dcx().span_fatal(
1074+
span,
1075+
format!(
1076+
"Unexpected layout for {err_attr_name} annotated struct: \
1077+
Expected member `{name}` at offset {expected:?}, but was at {actual:?}"
1078+
),
1079+
)
1080+
}
1081+
}
1082+
10621083
Ok((element_word, count))
10631084
} else {
10641085
Err(tcx

0 commit comments

Comments
 (0)