Auto merge of #77198 - jonas-schievink:rollup-i59i41h, r=jonas-schievink
Rollup of 15 pull requests Successful merges: - #76932 (Relax promises about condition variable.) - #76973 (Unstably allow assume intrinsic in const contexts) - #77005 (BtreeMap: refactoring around edges) - #77066 (Fix dest prop miscompilation around references) - #77073 (dead_code: look at trait impls even if they don't contain items) - #77086 (Include libunwind in the rust-src component.) - #77097 (Make [].as_[mut_]ptr_range() (unstably) const.) - #77106 (clarify that `changelog-seen = 1` goes to the beginning of config.toml) - #77120 (Add `--keep-stage-std` to `x.py` for keeping only standard library artifacts) - #77126 (Invalidate local LLVM cache less often) - #77146 (Install std for non-host targets) - #77155 (remove enum name from ImplSource variants) - #77176 (Removing erroneous semicolon in transmute documentation) - #77183 (Allow multiple allow_internal_unstable attributes) - #77189 (Remove extra space from vec drawing) Failed merges: r? `@ghost`
This commit is contained in:
commit
c6e4db620a
45 changed files with 576 additions and 452 deletions
|
@ -435,6 +435,12 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
|
|||
// These just return their argument
|
||||
self.copy_op(args[0], dest)?;
|
||||
}
|
||||
sym::assume => {
|
||||
let cond = self.read_scalar(args[0])?.check_init()?.to_bool()?;
|
||||
if !cond {
|
||||
throw_ub_format!("`assume` intrinsic called with `false`");
|
||||
}
|
||||
}
|
||||
_ => return Ok(false),
|
||||
}
|
||||
|
||||
|
|
|
@ -390,9 +390,9 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
|
|||
ty::InstanceDef::Virtual(_, idx) => {
|
||||
let mut args = args.to_vec();
|
||||
// We have to implement all "object safe receivers". Currently we
|
||||
// support built-in pointers (&, &mut, Box) as well as unsized-self. We do
|
||||
// support built-in pointers `(&, &mut, Box)` as well as unsized-self. We do
|
||||
// not yet support custom self types.
|
||||
// Also see librustc_codegen_llvm/abi.rs and librustc_codegen_llvm/mir/block.rs.
|
||||
// Also see `compiler/rustc_codegen_llvm/src/abi.rs` and `compiler/rustc_codegen_ssa/src/mir/block.rs`.
|
||||
let receiver_place = match args[0].layout.ty.builtin_deref(true) {
|
||||
Some(_) => {
|
||||
// Built-in pointer.
|
||||
|
|
|
@ -21,7 +21,7 @@ pub fn custom_coerce_unsize_info<'tcx>(
|
|||
});
|
||||
|
||||
match tcx.codegen_fulfill_obligation((ty::ParamEnv::reveal_all(), trait_ref)) {
|
||||
Ok(traits::ImplSourceUserDefined(traits::ImplSourceUserDefinedData {
|
||||
Ok(traits::ImplSource::UserDefined(traits::ImplSourceUserDefinedData {
|
||||
impl_def_id,
|
||||
..
|
||||
})) => tcx.coerce_unsized_info(impl_def_id).custom_kind.unwrap(),
|
||||
|
|
|
@ -905,7 +905,7 @@ impl<'a, 'tcx> Visitor<'tcx> for FindAssignments<'a, 'tcx> {
|
|||
// FIXME: This can be smarter and take `StorageDead` into account (which
|
||||
// invalidates borrows).
|
||||
if self.ever_borrowed_locals.contains(dest.local)
|
||||
&& self.ever_borrowed_locals.contains(src.local)
|
||||
|| self.ever_borrowed_locals.contains(src.local)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue