Do not treat vtable supertraits as distinct when bound with different bound vars
This commit is contained in:
parent
37a430e6ea
commit
fdc4bd22b7
18 changed files with 146 additions and 115 deletions
|
@ -312,7 +312,12 @@ impl<'ll, 'tcx> ConstCodegenMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
|||
GlobalAlloc::VTable(ty, dyn_ty) => {
|
||||
let alloc = self
|
||||
.tcx
|
||||
.global_alloc(self.tcx.vtable_allocation((ty, dyn_ty.principal())))
|
||||
.global_alloc(self.tcx.vtable_allocation((
|
||||
ty,
|
||||
dyn_ty.principal().map(|principal| {
|
||||
self.tcx.instantiate_bound_regions_with_erased(principal)
|
||||
}),
|
||||
)))
|
||||
.unwrap_memory();
|
||||
let init = const_alloc_to_llvm(self, alloc, /*static*/ false);
|
||||
let value = self.static_addr_of(init, alloc.inner().align, None);
|
||||
|
|
|
@ -1406,7 +1406,7 @@ fn build_vtable_type_di_node<'ll, 'tcx>(
|
|||
|
||||
let vtable_entries = if let Some(poly_trait_ref) = poly_trait_ref {
|
||||
let trait_ref = poly_trait_ref.with_self_ty(tcx, ty);
|
||||
let trait_ref = tcx.erase_regions(trait_ref);
|
||||
let trait_ref = tcx.erase_regions(tcx.instantiate_bound_regions_with_erased(trait_ref));
|
||||
|
||||
tcx.vtable_entries(trait_ref)
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue