Ere*_*555 3 llvm llvm-gcc llvm-clang llvm-ir llvm-c++-api
我需要检查我的文件中的函数 A 是否正在调用函数 B。我当前的方法是遍历函数 A 中的所有指令,看看是否有任何调用/调用指令正在调用 B。有人能建议更好的方法吗?
LLVM 提供易于使用的方法来使用 Users/Uses 遍历内存 IR 的 use-def/def-use 链。
你可以遍历B的Uses,然后检查它的父函数是否是A。
for(Value::Use_iterator ui = B.Use_Begin(); ui != B.Use_end(); ++ui) {
if(instruction* call = dyn_cast<Instruction>(ui->getUser())) {
Function* caller = call->getParent()->getParent();
// check if caller is A or not
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码片段只需稍加修改即可工作。请参阅:LLVM 使用参考以获取更多信息。
| 归档时间: |
|
| 查看次数: |
1456 次 |
| 最近记录: |