Auto merge of #105252 - bjorn3:codegen_less_pair_values, r=nagisa

Use struct types during codegen in less places

This makes it easier to use cg_ssa from a backend like Cranelift that doesn't have any struct types at all. After this PR struct types are still used for function arguments and return values. Removing those usages is harder but should still be doable.
This commit is contained in:
bors 2022-12-12 10:38:31 +00:00
commit 6ec5ebdc2c

View File

@ -1119,18 +1119,18 @@ impl<'a, 'gcc, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'gcc, 'tcx> {
// TODO(antoyo) // TODO(antoyo)
} }
fn cleanup_landing_pad(&mut self, _ty: Type<'gcc>, _pers_fn: RValue<'gcc>) -> RValue<'gcc> { fn cleanup_landing_pad(&mut self, _pers_fn: RValue<'gcc>) -> (RValue<'gcc>, RValue<'gcc>) {
let field1 = self.context.new_field(None, self.u8_type.make_pointer(), "landing_pad_field_1"); (
let field2 = self.context.new_field(None, self.i32_type, "landing_pad_field_1"); self.current_func().new_local(None, self.u8_type.make_pointer(), "landing_pad0")
let struct_type = self.context.new_struct_type(None, "landing_pad", &[field1, field2]); .to_rvalue(),
self.current_func().new_local(None, struct_type.as_type(), "landing_pad") self.current_func().new_local(None, self.i32_type, "landing_pad1").to_rvalue(),
.to_rvalue() )
// TODO(antoyo): Properly implement unwinding. // TODO(antoyo): Properly implement unwinding.
// the above is just to make the compilation work as it seems // the above is just to make the compilation work as it seems
// rustc_codegen_ssa now calls the unwinding builder methods even on panic=abort. // rustc_codegen_ssa now calls the unwinding builder methods even on panic=abort.
} }
fn resume(&mut self, _exn: RValue<'gcc>) { fn resume(&mut self, _exn0: RValue<'gcc>, _exn1: RValue<'gcc>) {
// TODO(bjorn3): Properly implement unwinding. // TODO(bjorn3): Properly implement unwinding.
self.unreachable(); self.unreachable();
} }