Fix and test

This commit is contained in:
Andrzej Janik 2021-05-06 01:32:45 +02:00
commit 7f051ad20e

View file

@ -2424,7 +2424,7 @@ impl<'a, 'b> FlattenArguments<'a, 'b> {
let (reg, offset) = desc.op; let (reg, offset) = desc.op;
let add_type; let add_type;
match typ { match typ {
ast::Type::Pointer(underlying_type) => { ast::Type::Scalar(underlying_type) => {
let (reg_typ, space) = self.id_def.get_typed(reg)?; let (reg_typ, space) = self.id_def.get_typed(reg)?;
if let ast::Type::Pointer(..) = reg_typ { if let ast::Type::Pointer(..) = reg_typ {
let id_constant_stmt = self.id_def.register_intermediate(typ.clone(), space); let id_constant_stmt = self.id_def.register_intermediate(typ.clone(), space);
@ -2443,12 +2443,10 @@ impl<'a, 'b> FlattenArguments<'a, 'b> {
})); }));
return Ok(dst); return Ok(dst);
} else { } else {
add_type = self.id_def.get_typed(reg)?.0; add_type = reg_typ;
} }
} }
_ => { _ => return Err(error_unreachable()),
add_type = typ.clone();
}
}; };
let (width, kind) = match add_type { let (width, kind) = match add_type {
ast::Type::Scalar(scalar_t) => { ast::Type::Scalar(scalar_t) => {