pub fn get_fn<Bx: BuilderMethods<'a, 'tcx>>(
self,
- bx: &Bx,
+ bx: &mut Bx,
llvtable: Bx::Value,
fn_ty: &FnType<'tcx, Ty<'tcx>>
) -> Bx::Value {
bx.cx().type_ptr_to(bx.cx().fn_ptr_backend_type(fn_ty))
);
let ptr_align = bx.tcx().data_layout.pointer_align;
- let ptr = bx.load(
- bx.inbounds_gep(llvtable, &[bx.cx().const_usize(self.0)]),
- ptr_align
- );
+ let gep = bx.inbounds_gep(llvtable, &[bx.cx().const_usize(self.0)]);
+ let ptr = bx.load(gep, ptr_align);
bx.nonnull_metadata(ptr);
// Vtable loads are invariant
bx.set_invariant_load(ptr);
pub fn get_usize<Bx: BuilderMethods<'a, 'tcx>>(
self,
- bx: &Bx,
+ bx: &mut Bx,
llvtable: Bx::Value
) -> Bx::Value {
// Load the data pointer from the object.
let llvtable = bx.pointercast(llvtable, bx.cx().type_ptr_to(bx.cx().type_isize()));
let usize_align = bx.tcx().data_layout.pointer_align;
- let ptr = bx.load(
- bx.inbounds_gep(llvtable, &[bx.cx().const_usize(self.0)]),
- usize_align
- );
+ let gep = bx.inbounds_gep(llvtable, &[bx.cx().const_usize(self.0)]);
+ let ptr = bx.load(gep, usize_align);
// Vtable loads are invariant
bx.set_invariant_load(ptr);
ptr