在clang 3.3.1中使用别名分析

Using AliasAnalysis interproceduraly in clang 3.3.1

本文关键字:别名分析 clang      更新时间:2023-10-16

我正在做一个扩展clang 3.3.1的项目。

我想使用AliasAnalysis类,我不确定,如果我错过了什么。当我询问AA时,如果内存位置在不同的函数别名中,clang会崩溃并出现以下错误:"BasicAliasAnalysis不支持过程间查询。"我想,这可能是一个解决方案,使用一种不同的分析,但我不知道如何在代码中做到这一点。有什么建议吗?:)

在LLVM中还没有任何过程间别名分析。部分问题是我们需要一个新的API来表达查询。

考虑一个自递归函数@f(noalias %x, noalias %y),它用@f(%y, %x)调用自己。今天我们回答,%x不等于%y,这在任何一个单独的调用帧中都是正确的。但是,如果您查看多个调用帧,您可以看到被调用方中的%x可能会别名调用方中的%y,因此同一函数中的%x和%y可能会别名。这就是为什么我们需要将当前的API与过程间API分开的核心原因。