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

时间:2017-05-03 12:11:10

标签: llvm llvm-ir

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

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

  

LLVM错误:程序使用了外部函数&llvm.returnaddress.i8'哪个无法解决!

我不知道如何解决它。有什么建议吗?谢谢!

1 个答案:

答案 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
}