如何检查函数是否在LLVM Instrumentation pass的ModulePass的系统头文件中定义?
How to check if function is defined in system header files within ModulePass in LLVM Instrumentation pass?
我正在实现一个自定义的LLVM modulePass in(转换/检测(,它对函数执行一些操作。我正在使用模块::迭代器来遍历模块中的函数。如何检查这些函数中的任何一个是否来自系统头文件。任何想法如何做到这一点。
Clang 具有所有声明的 SourceLocations,但该信息不会转换为运行 ModulePass 的 LLVM IR - 如果启用了调试信息或覆盖率,则调试信息除外。调试信息是尽力而为,但如果自 clang 发出 IR 以来未运行任何其他转换,则它通常有效。
这是一个有意的设计决策,LLVM 通常不应该以不同的方式处理系统和非系统功能。lib/Transforms/Utils/SimplifyLibCalls 中有一个本地化的异常.cpp它根据已知库函数的名称进行优化。使这安全的是,LLVM的用户将知道这些功能是否是语言标准定义的函数,并选择是否应用此优化。
相关文章:
- C++,系统无法执行指定的程序
- 在UNIX系统中使用DIR查找文件的字节大小
- 错误处理.将系统错误代码映射到泛型
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在C++游戏中与库存系统作斗争
- 文件系统:复制功能的速度秘诀是什么
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 在gtest.中使用fff.h模拟系统API
- 如何制作无限制照明系统
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 如何传递多个 std::文件系统选项?
- 遍历顺序由 std::文件系统directory_iterator给出
- C++系统找不到指定的文件错误
- 系统参数信息A 与 SPI_GETMOUSE 返回 0
- libstdc++ 文件系统中未初始化的用法?
- 如何在ECS框架中更新组件数据和通知系统
- boost::文件系统::recursive_directory_iterator多线程安全
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?
- 如何检查函数是否在LLVM Instrumentation pass的ModulePass的系统头文件中定义?