mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-15 20:45:45 +03:00
ScalarPair for two element tuples was treated wrongly in closure calls
This commit is contained in:
@@ -291,10 +291,10 @@ fn eval_fn_call(
|
||||
// and need to pack arguments
|
||||
Abi::Rust => {
|
||||
trace!(
|
||||
"arg_locals: {:?}",
|
||||
"arg_locals: {:#?}",
|
||||
self.frame().mir.args_iter().collect::<Vec<_>>()
|
||||
);
|
||||
trace!("args: {:?}", args);
|
||||
trace!("args: {:#?}", args);
|
||||
let local = arg_locals.nth(1).unwrap();
|
||||
for (i, &valty) in args.into_iter().enumerate() {
|
||||
let dest = self.eval_place(&mir::Place::Local(local).field(
|
||||
@@ -321,10 +321,10 @@ fn eval_fn_call(
|
||||
let mut arg_locals = self.frame().mir.args_iter();
|
||||
trace!("ABI: {:?}", sig.abi);
|
||||
trace!(
|
||||
"arg_locals: {:?}",
|
||||
"arg_locals: {:#?}",
|
||||
self.frame().mir.args_iter().collect::<Vec<_>>()
|
||||
);
|
||||
trace!("args: {:?}", args);
|
||||
trace!("args: {:#?}", args);
|
||||
match sig.abi {
|
||||
Abi::RustCall => {
|
||||
assert_eq!(args.len(), 2);
|
||||
@@ -376,14 +376,26 @@ fn eval_fn_call(
|
||||
}
|
||||
break;
|
||||
}
|
||||
let dest = self.eval_place(&mir::Place::Local(
|
||||
arg_locals.next().unwrap(),
|
||||
))?;
|
||||
let valty = ValTy {
|
||||
value: other,
|
||||
ty: layout.ty,
|
||||
};
|
||||
self.write_value(valty, dest)?;
|
||||
{
|
||||
let mut write_next = |value| {
|
||||
let dest = self.eval_place(&mir::Place::Local(
|
||||
arg_locals.next().unwrap(),
|
||||
))?;
|
||||
let valty = ValTy {
|
||||
value: Value::Scalar(value),
|
||||
ty: layout.ty,
|
||||
};
|
||||
self.write_value(valty, dest)
|
||||
};
|
||||
match other {
|
||||
Value::Scalar(value) | Value::ScalarPair(value, _) => write_next(value)?,
|
||||
_ => unreachable!(),
|
||||
}
|
||||
if let Value::ScalarPair(_, value) = other {
|
||||
write_next(value)?;
|
||||
}
|
||||
}
|
||||
assert!(arg_locals.next().is_none());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
+1
-1
Submodule src/tools/miri updated: 49ca174648...ac667d372f
Reference in New Issue
Block a user