Displaying 2 results from an estimated 2 matches for "slotp1".
Did you mean:
slot1
2016 Feb 29
0
[cfe-dev] RFC: A new ABI for virtual calls, and a change to the virtual call representation in the IR
...)
> %vtable = load i8* %a
> %fp = i8* @llvm.vtable.load.relative(%vtable, %slot)
> %casted_fp = bitcast i8* %fp to void (%A*)
> call void %casted_fp(%a)
> }
>
> define {i8*, i8*} @getmfp() {
> %slot = call i32 @llvm.vtable.slot.offset(!"A", i32 1)
> %slotp1 = add %slot, 1
> %result = insertvalue {i8*, i8*} {i8* 0, i8* 0}, 0, %slotp1
> ret {i8*, i8*} %result
> }
>
> define @callmfp(%A* %a, {i8*, i8*} %m) {
> ; assuming the call is virtual and no this adjustment
> %slot = extractvalue i8* %m, 0
> %slotm1 = sub %slot, 1...
2016 Feb 29
10
RFC: A new ABI for virtual calls, and a change to the virtual call representation in the IR
...lvm.vtable.slot.offset(!"A", i32 1)
%vtable = load i8* %a
%fp = i8* @llvm.vtable.load.relative(%vtable, %slot)
%casted_fp = bitcast i8* %fp to void (%A*)
call void %casted_fp(%a)
}
define {i8*, i8*} @getmfp() {
%slot = call i32 @llvm.vtable.slot.offset(!"A", i32 1)
%slotp1 = add %slot, 1
%result = insertvalue {i8*, i8*} {i8* 0, i8* 0}, 0, %slotp1
ret {i8*, i8*} %result
}
define @callmfp(%A* %a, {i8*, i8*} %m) {
; assuming the call is virtual and no this adjustment
%slot = extractvalue i8* %m, 0
%slotm1 = sub %slot, 1
%vtable = load i8* %a
%fp = i8* @ll...