1
Fork 0

Do not read a scalar on a non-scalar layout.

This commit is contained in:
Camille GILLOT 2023-10-31 19:29:08 +00:00
parent 3c48243b6f
commit 22ed51e136
4 changed files with 802 additions and 2 deletions

View file

@ -953,8 +953,13 @@ impl<'body, 'tcx> VnState<'body, 'tcx> {
let as_bits = |value| {
let constant = self.evaluated[value].as_ref()?;
let scalar = self.ecx.read_scalar(constant).ok()?;
scalar.to_bits(constant.layout.size).ok()
if layout.abi.is_scalar() {
let scalar = self.ecx.read_scalar(constant).ok()?;
scalar.to_bits(constant.layout.size).ok()
} else {
// `constant` is a wide pointer. Do not evaluate to bits.
None
}
};
// Represent the values as `Ok(bits)` or `Err(VnIndex)`.