Skip to content

Commit f2ef005

Browse files
committed
Resolve to Instance::VtableShim when necessary.
1 parent 250979c commit f2ef005

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

src/librustc_codegen_llvm/callee.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,3 +220,19 @@ pub fn resolve_and_get_fn(
220220
).unwrap()
221221
)
222222
}
223+
224+
pub fn resolve_and_get_fn_for_vtable(
225+
cx: &CodegenCx<'ll, 'tcx>,
226+
def_id: DefId,
227+
substs: &'tcx Substs<'tcx>,
228+
) -> &'ll Value {
229+
get_fn(
230+
cx,
231+
ty::Instance::resolve_for_vtable(
232+
cx.tcx,
233+
ty::ParamEnv::reveal_all(),
234+
def_id,
235+
substs
236+
).unwrap()
237+
)
238+
}

src/librustc_codegen_llvm/meth.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ pub fn get_vtable(
8989
let methods = tcx.vtable_methods(trait_ref.with_self_ty(tcx, ty));
9090
let methods = methods.iter().cloned().map(|opt_mth| {
9191
opt_mth.map_or(nullptr, |(def_id, substs)| {
92-
callee::resolve_and_get_fn(cx, def_id, substs)
92+
callee::resolve_and_get_fn_for_vtable(cx, def_id, substs)
9393
})
9494
});
9595

src/librustc_mir/monomorphize/collector.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -915,7 +915,7 @@ fn create_mono_items_for_vtable_methods<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
915915
// Walk all methods of the trait, including those of its supertraits
916916
let methods = tcx.vtable_methods(poly_trait_ref);
917917
let methods = methods.iter().cloned().filter_map(|method| method)
918-
.map(|(def_id, substs)| ty::Instance::resolve(
918+
.map(|(def_id, substs)| ty::Instance::resolve_for_vtable(
919919
tcx,
920920
ty::ParamEnv::reveal_all(),
921921
def_id,

0 commit comments

Comments
 (0)