程序使用了无法解析的外部函数 'llvm.returnaddress.i8'

Program used external function 'llvm.returnaddress.i8' which could not be resolved

我想在传递中使用 llvm.returnaddress.i8 来获取函数的 return 值。

执行../llvm/bin/lli test_re.bc后,得到

LLVM ERROR: Program used external function 'llvm.returnaddress.i8' which could not be resolved!

不知道怎么解决。有什么建议吗?谢谢!

内部函数称为 llvm.returnaddress,而不是 llvm.returnaddress.i8

declare i8* @llvm.returnaddress(i32)
declare i32 @printf(i8*, ...)

@fmt = constant [20 x i8] c"Return address: %p[=10=]a[=10=]"

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
}