llvm-clang相关内容

clang-tidy版本3.8和4.0中缺少clang-analyzer-alpha.unix.PthreadLock检查?

我正在尝试使用clang-tidy现代化模块的C ++源代码.几周前,我下载并构建了 clang和clang工具 3.9版,并在其上运行我得到的一个cpp文件之一clang-analyzer-alpha.unix.PthreadLock表示已经采取了锁定措施. 后来,由于篇幅所限,我删除了该版本的clang,并使用了我们的第三方存储库中可用的3.8和4.0版本. 在这两个版本中,我都没 ..
发布时间:2020-05-02 11:05:36 其他开发

LLVM IR:如何在另一个.ll文件中调用函数

我正在编写LLVM IR代码,可以在另一个.ll文件中调用一个函数吗? 例如: 在一个.ll文件中,有一个函数foo();. 我可以在b.ll中使用此功能,就像调用foo一样吗?如果是这样,我如何添加a.ll 谢谢 解决方案 您需要在调用它的ll文件中添加函数foo的声明,然后像往常一样转换链接ll文件以生成可执行文件 llvm-link a.ll b.ll -o a. ..
发布时间:2020-05-02 11:05:30 其他开发

协议定义重复警告

首先,我看到了此问题以及此,但我的问题不是在那儿解决. 我在自己的头文件中定义了协议ProtocolA.然后,我有两个ClassA和ClassB类别,它们都符合该协议,因此协议头文件被导入了它们的头文件中. 现在,它变得有点复杂了. ClassA在第三个ClassC中使用(因此被导入).此类符合第二个协议ProtocolB.该协议还具有其自己的头文件,在其中使用和导入ClassB.因此 ..
发布时间:2020-05-02 11:04:07 移动开发

在Ubuntu 16.04上构建LLVM 6 Trunk不能构建lld

我正在Ubuntu 16.04上构建LLVM 6.我也想要lld.但是无论我做什么,lld都不会构建/安装. 遵循此处中的以下说明. 仍然在第一个和第二个中进行筛选:) 阅读文档. 阅读文档. 请记住,您两次被警告阅读文档. 特别是,指定的相对路径很重要. 结帐LLVM: cd where-you-want-llvm-to-live svn co http ..
发布时间:2020-05-02 11:03:08 其他开发

Clang AST转储不显示#defines

我正在像这样转储某些标头的AST: clang -cc1 -ast-dump -fblocks header.h 但是,标头上的任何#define都不会显示在转储中.有没有添加它们的方法? 解决方案 是的,#define是由预处理程序而不是编译器处理的.因此,您需要一个预处理器解析器阶段.我知道两个: Boost Wave 可以为您预处理输入和/或为您提供了触发宏定义或使用 ..
发布时间:2020-05-02 11:02:59 其他开发

是否可以使用llc标志运行clang

有没有一种方法可以运行clang并添加llc标志?我想使用"-all-after-all",“-print-before-all",“-debug-only" ...,而不必在两者之间使用.bc文件. 解决方案 可以使用-mllvm将其他参数传递给LLVM的选项解析器.对于您的情况,它看起来像这样: clang [...] -mllvm -print-after-all ..
发布时间:2020-05-02 11:02:26 其他开发

Clang链接错误:LLVM传递添加的对函数调用的未定义引用

因此,我正在按照本教程 https://www.cs进行操作. cornell.edu/~asampson/blog/llvm.html 通过添加对外部函数的调用(在rtlib.c中是logop)来传递用于检测程序的传递.但是,与本教程不同的是,我尝试使用更大的代码库masstree: https://github. com/kohler/masstree-beta . 因此,按照Masst ..
发布时间:2020-05-02 10:59:33 其他开发

在llvm中获取局部变量的实际值

如果我有这个示例: int a=0, b=0; a和b是局部变量,并对其值进行任何修改,例如: a++; b++; 在运行MCJIT期间,我需要获取此行代码中的值. 我的意思是值不是Value类,而是实际的整数或任何类型的值. 解决方案 您需要从JITed LLVM函数返回该值,以便从调用MCJIT的代码中检索该值. 查看此万花筒示例. 相关代码在Ha ..
发布时间:2020-05-02 10:58:35 其他开发

在EnableABIBreakingChecks上编译失败

我最近安装了LLVM v8.0.0(在RHEL 7.4上).我正在通过 LLVM万花筒教程来学习如何使用该系统,但是遇到问题链接. 每个教程(第二章结束) ,我运行: clang++ -g -O3 kld.cpp `llvm-config --cxxflags` -o kld 它可以编译,但是链接器失败: /tmp/kld-f7264f.o:(.data+0x0): unde ..
发布时间:2020-05-02 10:57:27 其他开发

如何从LLVM指令获取文件名和目录?

我需要在llvm传递过程中提取目录和文件名. 当前版本的llvm将getFilename和getDirectory从DebugLoc移到了DebugInfoMetadata.我无法直接在DebugLoc标头中找到类成员getFilename.因此,如何从指令转到源代码的文件名和目录? http://llvm.org/docs/doxygen/html/classllvm_1_1DebugLo ..
发布时间:2020-05-02 10:56:58 其他开发

如何从LLVM中的CallInst获取间接调用的函数名称

Function *fun = call->getCalledFunction(); 如果 getCalledFunction();是间接调用,则返回null.如何获得函数名称或指针名称? 我发现Stack Overflow中与此问题有关的所有问题都涉及直接调用的函数名或指针类型. 我只想跟踪这种情况: void foo(){} void goo(){} void main ..
发布时间:2020-05-02 10:56:56 C/C++开发

将自动工具软件构建为LLVM位码

我想使用autotools构建系统将软件编译为LLVM位代码;也就是说,我希望最后获得的可执行文件是LLVM位代码,而不是实际的机器代码. (目标是能够在整个程序上运行LLVM位代码分析工具.) 我尝试指定CC="clang -emit-llvm -use-gold-plugins"和configure脚本的变体,但无济于事.总是有问题(例如,程序包构建了.a静态库,链接器拒绝了该库) ..
发布时间:2020-05-02 10:56:41 其他开发