3

我正在尝试编写一个 LLVM 传递,它将找到直接或间接调用外部函数(即当前编译单元中未定义的函数)的函数

例如,在 C 上运行以下代码时:

void a(string s) {print(s)}; int b(int x) {return 1} void c(void) {a("hello);b}

它应该标记 a 和 c。

我需要某种方式来判断给定的调用 inst 是否对应于对外部函数的直接调用。我的第一种方法是从调用 inst 中提取函数对象,然后使用从 GlobalValue 类继承的 isDeclaration() 方法。这最终在每个函数调用上都返回 true,这显然是不可取的。

处理这个问题的正确方法是什么?

4

0 回答 0