mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
Remove unreachable unsized arg handling in store_fn_arg/store_arg in codegen
This commit is contained in:
@@ -730,7 +730,7 @@ fn store(
|
||||
if self.is_sized_indirect() {
|
||||
OperandValue::Ref(PlaceValue::new_sized(val, self.layout.align.abi)).store(bx, dst)
|
||||
} else if self.is_unsized_indirect() {
|
||||
bug!("unsized `ArgAbi` must be handled through `store_fn_arg`");
|
||||
bug!("unsized `ArgAbi` cannot be stored");
|
||||
} else if let PassMode::Cast { ref cast, .. } = self.mode {
|
||||
// FIXME(eddyb): Figure out when the simpler Store is safe, clang
|
||||
// uses it for i16 -> {i8, i8}, but not for i24 -> {i8, i8, i8}.
|
||||
@@ -797,12 +797,7 @@ fn store_fn_arg<'a>(
|
||||
OperandValue::Pair(next(), next()).store(bx, dst);
|
||||
}
|
||||
PassMode::Indirect { meta_attrs: Some(_), .. } => {
|
||||
let place_val = PlaceValue {
|
||||
llval: next(),
|
||||
llextra: Some(next()),
|
||||
align: self.layout.align.abi,
|
||||
};
|
||||
OperandValue::Ref(place_val).store(bx, dst);
|
||||
bug!("unsized `ArgAbi` cannot be stored");
|
||||
}
|
||||
PassMode::Direct(_)
|
||||
| PassMode::Indirect { meta_attrs: None, .. }
|
||||
|
||||
@@ -215,9 +215,9 @@ fn store(
|
||||
let align = attrs.pointee_align.unwrap_or(self.layout.align.abi);
|
||||
OperandValue::Ref(PlaceValue::new_sized(val, align)).store(bx, dst);
|
||||
}
|
||||
// Unsized indirect qrguments
|
||||
// Unsized indirect arguments cannot be stored
|
||||
PassMode::Indirect { attrs: _, meta_attrs: Some(_), on_stack: _ } => {
|
||||
bug!("unsized `ArgAbi` must be handled through `store_fn_arg`");
|
||||
bug!("unsized `ArgAbi` cannot be stored");
|
||||
}
|
||||
PassMode::Cast { cast, pad_i32: _ } => {
|
||||
// The ABI mandates that the value is passed as a different struct representation.
|
||||
@@ -272,12 +272,7 @@ fn store_fn_arg(
|
||||
OperandValue::Pair(next(), next()).store(bx, dst);
|
||||
}
|
||||
PassMode::Indirect { attrs: _, meta_attrs: Some(_), on_stack: _ } => {
|
||||
let place_val = PlaceValue {
|
||||
llval: next(),
|
||||
llextra: Some(next()),
|
||||
align: self.layout.align.abi,
|
||||
};
|
||||
OperandValue::Ref(place_val).store(bx, dst);
|
||||
bug!("unsized `ArgAbi` cannot be stored");
|
||||
}
|
||||
PassMode::Direct(_)
|
||||
| PassMode::Indirect { attrs: _, meta_attrs: None, on_stack: _ }
|
||||
|
||||
Reference in New Issue
Block a user