KLEE:ERROR:未知内在:llvm.objectsize.i64.p0i8

时间:2014-10-28 00:18:25

标签: llvm klee

我遇到了错误" KLEE:错误:未知内在:llvm.objectsize.i64.p0i8"在程序上运行KLEE时。

我知道我应该在IntrinsicCleaner传递中添加对它的支持。但是我找不到这个内在函数的文档。有人知道这个内在函数的目的吗?

以下是涉及该功能的LLCM代码行:
%6 = call i64 @llvm.objectsize.i64.p0i8(i8* %5, i1 false)

2 个答案:

答案 0 :(得分:1)

它位于LLVM documentation

declare i64 @llvm.objectsize.i64(i8* <object>, i1 <min>)
  

llvm.objectsize内在函数旨在为优化器提供信息,以便在编译时确定a)操作(如memcpy)是否会溢出对应于对象的缓冲区,或b)运行时检查溢出是否为没必要。此上下文中的对象表示特定类,结构,数组或其他对象的分配。

答案 1 :(得分:0)

我会扩展 Marco 的回答来解决丁宝的问题。 'p0' 表示指向地址空间 0 的指针; 'i8' 表示 8 位整数。见the LLLVM language reference