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