Merge commit '0969bc6dde
' into sync_cg_clif-2021-03-29
This commit is contained in:
commit
5444b46234
49 changed files with 880 additions and 495 deletions
|
@ -2,7 +2,6 @@
|
|||
|
||||
use crate::prelude::*;
|
||||
|
||||
use cranelift_codegen::entity::EntityRef;
|
||||
use cranelift_codegen::ir::immediates::Offset32;
|
||||
|
||||
fn codegen_field<'tcx>(
|
||||
|
@ -414,7 +413,7 @@ impl<'tcx> CPlace<'tcx> {
|
|||
self,
|
||||
fx: &mut FunctionCx<'_, '_, 'tcx>,
|
||||
from: CValue<'tcx>,
|
||||
#[cfg_attr(not(debug_assertions), allow(unused_variables))] method: &'static str,
|
||||
method: &'static str,
|
||||
) {
|
||||
fn transmute_value<'tcx>(
|
||||
fx: &mut FunctionCx<'_, '_, 'tcx>,
|
||||
|
@ -462,8 +461,7 @@ impl<'tcx> CPlace<'tcx> {
|
|||
|
||||
assert_eq!(self.layout().size, from.layout().size);
|
||||
|
||||
#[cfg(debug_assertions)]
|
||||
{
|
||||
if fx.clif_comments.enabled() {
|
||||
use cranelift_codegen::cursor::{Cursor, CursorPosition};
|
||||
let cur_block = match fx.bcx.cursor().position() {
|
||||
CursorPosition::After(block) => block,
|
||||
|
@ -707,6 +705,19 @@ pub(crate) fn assert_assignable<'tcx>(
|
|||
}
|
||||
// dyn for<'r> Trait<'r> -> dyn Trait<'_> is allowed
|
||||
}
|
||||
(&ty::Adt(adt_def_a, substs_a), &ty::Adt(adt_def_b, substs_b))
|
||||
if adt_def_a.did == adt_def_b.did =>
|
||||
{
|
||||
let mut types_a = substs_a.types();
|
||||
let mut types_b = substs_b.types();
|
||||
loop {
|
||||
match (types_a.next(), types_b.next()) {
|
||||
(Some(a), Some(b)) => assert_assignable(fx, a, b),
|
||||
(None, None) => return,
|
||||
(Some(_), None) | (None, Some(_)) => panic!("{:#?}/{:#?}", from_ty, to_ty),
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
assert_eq!(
|
||||
from_ty, to_ty,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue