我想在传递中使用llvm.returnaddress.i8
来获取函数的返回值。
执行../llvm/bin/lli test_re.bc
后,我得到了
LLVM错误:程序使用了外部函数&llvm.returnaddress.i8'哪个无法解决!
我不知道如何解决它。有什么建议吗?谢谢!
答案 0 :(得分:1)
内在函数称为llvm.returnaddress,而不是llvm.returnaddress.i8
。
declare i8* @llvm.returnaddress(i32)
declare i32 @printf(i8*, ...)
@fmt = constant [20 x i8] c"Return address: %p\0a\00"
define i32 @main() {
%fmt = getelementptr [20 x i8], [20 x i8]* @fmt, i32 0, i32 0
%ra = call i8* @llvm.returnaddress(i32 0)
call i32 (i8*, ...) @printf(i8* %fmt, i8* %ra)
ret i32 0
}