Do not read a scalar on a non-scalar layout.
This commit is contained in:
parent
3c48243b6f
commit
22ed51e136
4 changed files with 802 additions and 2 deletions
|
@ -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)`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue