我正在做一个扩展 clang 3.3.1 的项目。
我想使用 AliasAnalysis 类,但我不确定是否遗漏了什么。 当我询问 AA 时,如果不同函数中的内存位置存在别名,clang 会崩溃并出现以下错误:“BasicAliasAnalysis 不支持过程间查询。” 我想,这可能是一种解决方案,使用不同类型的分析,但我无法弄清楚如何在代码中做到这一点。有什么建议么? :)
最佳答案
LLVM 中还没有任何过程间别名分析。部分问题是我们需要一个新的 API 来表达查询。
考虑一个自递归函数@f(noalias %x, noalias %y),它用@f(%y, %x) 调用自己。今天我们回答 %x noalias %y,这在任何单个调用框架中都是正确的。但是,如果您查看多个调用帧,您会发现被调用者中的 %x 可能是调用者中的 %y 的别名,因此同一函数中的 %x 和 %y 可能是别名。这就是我们需要将当前 API 与过程间 API 分开的核心原因。
关于c++ - 在 clang 3.3.1 中跨过程使用 AliasAnalysis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31383982/