标签: Clang
llvm-clangclang-static-analyzer
我已经在clang中实现了一个检查器。我已经编译了它,现在我用它检查一个c文件,其中包括stdio.h文件。我发出以下命令来运行检查程序:
clang-cc1-analyze-analyzer checker=alpha.core.FuncPrototype原型funcprototypetest.c
我得到以下错误:
funcprototypetest.c:1:10:致命错误:“未找到stdio.h”文件
#include <stdio.h>
^
#包括
^
有人能帮我
我有一个文件,我想从中提取其文件名。显然,我应该可以通过使用的。然而,当我处理一些头文件时,结果似乎总是一个空字符串
我遵循源代码,发现问题在于getFilename函数中,该函数的内容如下:
/// Return the filename of the file containing a SourceLocation.
StringRef getFilename(SourceLocation SpellingLoc) const {
if (const FileEntry *F = get
使用clang链接程序失败如下:
/usr/bin/x86_64-pc-linux-gnu-ld:stackoverflow.o:对符号“\uuuucxa\u free\u exception@@CXXABI\u 1.3”的未定义引用
P>就像GCC一样,你必须使用CLAN+++来链接C++程序你能提供更多关于你要编译的程序的解释吗?或者更好,你能提供一个?如果你只有一条错误信息,通常很难找到问题。我想,你的问题出现在低质量的队列中,因为从提供的有限信息来看,很难在你的答案中直接得出结论。因此
标签: Clang
code-coveragelcov
我正在使用lcov为我正在从事的项目生成覆盖信息。它基本上是工作的,除了某些原因,它似乎没有在每一种情况下计算函数的顶行。这意味着具有完整测试覆盖率的类文件仍将缺少几行,因此显示为90%
这没什么大不了的,但有点烦人。我不知道是否有人知道为什么
下面我提供了一个完整的示例来演示这个问题。当这个程序运行时,6行中有4行被“命中”,留下68.7%的行覆盖率,尽管所有行都被清晰地执行
GCOV输出
Summary coverage rate:
lines......: 66.7% (4 of 6
标签: Clang
llvm-clanglibtooling
除了简单地获取并检查decls的名称外,在clang中是否有一些方法可以比较两个或多个decls(clang::Decl)是否相同?您解决过这个问题吗?我认为解决方案是clang::Decl::getID。
通过预处理器宏,我发现OpenCL代码现在可以用Clang3.4编译。根据文档,此版本尚不支持Clang 3.8中引入的\uuu内置\uu mul\u overflow()
是否可以指定OpenCL使用更新的Clang版本?
或者最新的Nvidia驱动程序真的仅限于这样一个旧的编译器吗?不幸的是,您无法控制OpenCL驱动程序使用哪个编译器。您可以尝试有条件地编译代码以适应不同的编译器,但仅此而已。这正是我所担心的。谢谢
当I svn co llvm-3.3、clang-3.3、compiler-rt时,build通过了,但build没有在build/Debug+断言中创建clangexe。当我为svn只放了一个clang时,联合构建并没有通过,但他创建了clang exe。我是Ubuntu上的Linux用户
make[4]: Leaving directory `/home/rtrk/llvm/test/branches_release/release_33-build/tools/clang/runtime/
我正在开发一个基于叮当声的工具,我需要能够在某些时候创建预编译的头文件。我在哪里可以找到关于如何制作的信息?据我所知,clang/LLVM文档中没有任何关于如何做到这一点的示例。如果您使用的是CMake,则使用会有所帮助。
标签: Clang
c++14constexprqt5.4gcc5
如果这个问题超出主题,我很抱歉,但这是C++14程序员的可访问性问题
今天,我在我的PC(Windows 8.1/64位/x86)上更新了Qt v5.4,现在它支持gcc编译器v4.9.2。但我看到自gcc v5.1以来,constexpr放松(我真的很感兴趣)就可以使用了
谷歌搜索显示:
clang是C++14最新特性的更好的编译器(v3.6甚至在处理实验性的C++17)
clang不容易适用于Qt库
gcc和clang“数据”都可以下载,但我不是专家
所以我想问的是,如何在Windows
我使用clang3.7在freebsd10.2上编译了PostgreSQL。问题是我无法使用LLDB 3.7连接到后端进程:
[eax@freebsd102 ~]$ ps wuax | grep postgres
eax 29177 0.0 2.0 169592 20888 - Is 6:11PM 0:00.00 postgres: checkpointer process (postgres)
eax 29178 0.0 2.0 169592 2092
我正在考虑由Libblang生成seastar的CTAG,
所以,我写了一些演示崩溃,我需要帮助
对于seastar项目,我从
seastar安装程序:install-dependencies.sh;cmake-DCMAKE\u BUILD\u TYPE=Debug-DCMAKE\u EXPORT\u COMPILE\u COMMANDS=1
(geretting然后编译_commands.json)
对于铿锵的CTAG,我从(这是我当前的演示)
首先:yum安装clanglibs clang
标签: Clang
clang++clang-formatclang-static-analyzer
我成功地使用了Clang的RecursiveASTVisitor对Clang的AST进行了顺序前遍历和顺序后遍历。对于post-order遍历访问者,我定义了一个shouldtranversepostorder(),它返回true,并返回pre-order遍历的相反结果
我发现我真的很想做一个组合遍历,既有前序遍历,也有后序遍历。也就是说,如果存在Stmt节点,我希望遍历(1)调用preVisitStmt(Stmt*节点),然后(2)访问Stmt子节点的节点,然后(3)调用postVisitSt
我有LLVM 3.3和Clang,以及
$ /tmp/clang/bin/clang -print-search-dirs
programs: =/tmp/clang/bin:/usr/lib/gcc/i486-linux-gnu/4.4/../../../../i486-linux-gnu/bin
libraries: =/tmp/clang/bin/../lib/clang/3.3:/usr/lib/gcc/i486-linux-gnu/4.4:/usr/lib/gcc/i486-linux
叮当作响的C++;口译译员
我很好奇使用CLAN作为嵌入式C++解释器。可以用它来解释“hello world”吗?目的是将源文件或源代码作为字符串,获得输入/输出流没有可执行文件调用(似乎CLANG的代码>驱动程序< /代码>执行 CLAN< /代码>和/或链接器可执行文件)。是CLAN库中的C++解释器。谢谢您的建议。不幸的是,我有奇怪的粘着错误:
我正在尝试编译使用LLVM/Clang API将“hello_world”编译为LLVM IR的代码:
#include <iostream>
#include <clang/Driver/Compilation.h>
#include <clang/Driver/Driver.h>
#include <clang/Frontend/TextDiagnosticPrinter.h>
#include <llvm/Support/Host.h
我将在一个环境中使用-emit LLVM-S-c file.cpp-o file.ll通过Clang 3.5生成LLVM位代码,并通过LLVM 3.3在另一个环境中执行它。请参阅lli工具。3.3 LLVM执行的can 3.5位代码是否向后兼容
PS.实际上它将由Emscripten在JS中执行,JS基于LLVM 3.3 trunk,如果有意义的话。我可以在LLVM 3.4和3.3之间移动,但我还没有安装3.5进行测试。这是否意味着它是向后兼容的,或者在我的示例中是兼容的?后面,我只验证了LLV
我正在做一些源代码中的铿锵重写。我想在语句前插入一行。例如,如果我从if语句内部调用,如下所示:
if (cmp(a,b) > 0 && cmp(c,d) < 0){
//do something
}
//there are call inside
if (cmp(a,b) > 0 && cmp(c,d) < 0){
//do something
}
for (int a = 0; a < range(s); a++){
//do
标签: Clang
c++builderc++builder-10.2-tokyo
我很难将旧的C++Builder 10.2项目升级到10.2.3(我们正在64位PC上使用32位的Clang编译器)
10.2.3安装顺利(在干净的Windows 10 PC上),-项目编译和链接-到目前为止,每个人都很高兴
但是,当在调试器中运行应用程序时,我可以看到MainForm的this指针(由于历史原因,是一个相当大的对象)在单个方法调用中突然变成垃圾(当调用它自己的方法时-就在构造函数完成之后),这导致了一个严重的失败
我尝试注释掉特定方法的\uuuu fastcall调用约定,然后
我想为我的项目编写一个适当的.clang格式的文件。希望在函数调用期间禁止它在第一个参数后断行
好:
不正常(应禁止):
我已经尝试过了,但没有成功。对于您的具体案例,您需要将声明onnextline的allowallParameters设置为false。我认为这个名称是不言自明的。您应该始终发布您正在使用的.clang格式文件,让每个人都能看到,因为许多选项可能会影响同一段代码。你也没有说你到底做了什么。提供这些数据可以帮助你更快地得到答案,因为更多的人会对回答这个问题感兴趣。
foo(a,
我的命令:
/usr/bin/c++ -fPIC -I/Users/me/project/include -I/usr/local/include/opencv \
-I/usr/local/include -I/opt/local/include -std=c++11 -O3 -M -c \
/Users/me/project/src/program.cpp | grep opencv
program.cpp具有:
#include "opencv2/core/core.hpp"
#incl
我查看了由glm(用于3d计算的矩阵向量库)操作的clang生成的反汇编代码
我注意到clang对双精度运算进行了一些“矢量化”,例如,在一条SIMD指令中强制执行两次乘法
然而,对于单精度计算,代码对我来说似乎不好。使用的指令来自SSE指令集和寄存器MMX指令集,但每次执行一个浮点数的多重应用程序,甚至一组赋值(如矩阵赋值)都是由大量movss语句执行的。这些糟糕的赋值甚至适用于双精度代码
为什么会这样,有没有任何命令行参数可以促使clang做得更好?我知道编译器并没有什么神奇之处,但我想16
我试图用-std=c++14,-std=c++1z,-std=c++1y来设置clangcl参数。它们不起作用。我正在为windows x64和VS 2015使用clang 3.7预编译。下面链接的clang页面声称-std=c++11,-std=c++14以及-std=c++1z都是受支持的命令。现在考虑到,据我所知,clang cl是clang--driver mode=cl,它旨在模拟MSVCcl.exe。我不明白为什么会消除对平台不可知的特性的支持,比如C++标准。
编辑:在同一主题的
我正在OSX10.10.5上构建Cogutils和Opencog
--C编译器标识为AppleClang 6.1.0.6020053
--CXX编译器标识为AppleClang 6.1.0.6020053
/Users/davidlaxer/cogutils/opencog/util/files.cc:55:39: error: non-
aggregate type 'const std::vector<std::string>' cannot be initialized wit
例如:
int x=0;
int y=0;
Constant* myGlobal = new GlobalVariable( myLlvmModule, myLlvmType, true, GlobalValue::InternalLinkage, initializationValue );
...
Constant* constValue = myGlobal->getInitializer();
其中x和y是全局变量,在main()函数中,我们执行以下操作:
x++;
y++;
环境:Ubuntu 18.04仿生版
git克隆llvm项目后,从
我使用Cmake命令行生成了构建凭据,如下所示:
cmake -DLLVM_TARGETS_TO_BUILD=X86 \
-DLLVM_TARGET_ARCH=X86 \
-DCMAKE_BUILD_TYPE="Release" \
-DLLVM_BUILD_EXAMPLES=1 \
-DCLANG_BUILD_EXAMPLES=1 \
-G "Unix Makefiles" \
../llvm/
生成makefile之后,我
类clang::ASTContext有一个方法:
DynTypedNodeList getParents(const NodeT &Node)
它返回给定AST节点的父节点列表
通常作为树的AST将是树结构,但出于某些原因(可能是性能原因),Clang允许节点具有多个父节点
在什么条件下(C++源代码模式),GETPARTENS()将返回多个父级?原始答案(不正确)
AST是一棵树,每个节点只有一个父节点getParents不仅返回父级,还返回父级的父级,依此类推。因此,事实上,函数应
我一直在努力从一个较老的平台上向前移植一些代码
叮当声的版本。我们有一个响亮的转变,走在东方,
执行一些基本的功能修改并退出
用于进一步编译的等效表示法。我们正在吃饭
正确复制TypedefDecl节点并维护其
父引用。考虑以下事项:
typedef struct {
char * buf;
size_t pos, len, size, flags;
} BufferBase;
typedef BufferBase *Buffer;
使用标准的Clang方法,我们可以看到以下解
我到处找,找不到解决这个问题的办法。我尝试重命名.h/.m文件,删除它们并再次创建它们,同时查看问题是否出在project manager的编译源中
这就是错误:
Ld /Users/mabdelhamid/Library/Developer/Xcode/DerivedData/Markschemes-dksalheponzwnocllyohgwmotxho/Build/Products/Debug-iphoneos/Markschemes.app/Markschemes normal armv
我想在性能优化的代码上运行,该代码使用各种指令集扩展,如sse2、sse4.1。不幸的是,llvm-3.4解释器不支持它们:
LLVM ERROR: Code generator does not support intrinsic function 'llvm.x86.sse41.ptestz'!
我不能在编译时禁用它,因为它们在源代码中被显式使用。我想,我需要的是一种自动向后翻译,将这种指令转换成普通的x86。Clang支持这样的功能吗?这是可能的,但是输出速度会非常慢
以下代码段:
#include <string>
#include <iostream>
int main()
{
std::string s = std::to_string(5);
std::cout << s << std::endl;
return 0;
}
请注意,对于-O2,代码段编译和链接都很好,所以我怀疑这可能是某种叮当作响的bug
编辑1:
我忘记输入链接错误:
F:/Programs/LLVM/bin
我需要使用clang构建一个AST,我发现唯一的教程很模糊,已经过时两年了。有人能给我举个例子吗?有几个教程演示了预处理器类的使用以及如何构建AST:
(有点过时,但有很多解释)
+1以获取漂亮而有用的链接,但似乎已经过时了。代码示例编译不正确。任何有用的链接,从零开始解释如何获得一个源文件,然后分析其源代码等等?在叮当的世界里,事情似乎变化得很快。我想最新的链接现在是谢谢你的链接。从中我发现并经历了,这似乎是我感兴趣的。谢谢!很少有链接:)
标签: Clang
tokenizeabstract-syntax-treellvm-clanglibclang
就像每一个新人一样,我正在尝试使用这里提供的教程,用叮当声构建一些东西:
我可以使用以下命令生成第一个和第二个教程:
export CLANG_LIBS="-lclangTooling -lclangFrontendTool -lclangFrontend -lclangDriver -lclangSerialization -lclangCodeGen -lclangParse -lclangSema -lclangStaticAnalyzerFrontend -lclangStaticAn
当我试图与忍者建立叮当声时出现了一个问题。我从链接中一个接一个地执行了所有命令:
但是在运行了《忍者》之后,教程上说“好吧,现在我们来建叮当!”构建一半的对象需要2个小时,之后操作系统卡住了,我甚至无法移动光标。我在笔记本电脑和PC上都做了这项工作,但结果是一样的。吸引我注意的是,文件夹的大小太大了(18.3GB)
有什么办法解决这个问题吗?我已经回答了关于StackOverflow的相同问题。在提出同样的问题之前,我将建议今后进行更深入的研究
在此处包括信息,以防链接丢失。正在发生的事情是,
我正在尝试使用pip在OSX 10.12.5上安装rpy2。我得到这个错误:
clang: error: unsupported option '-fopenmp'
clang: error: unsupported option '-fopenmp'
error: command '/usr/bin/clang' failed with exit status 1
据我所知,这是因为我的clang版本不支持OpenMP。我使用自制软件安装了LLVM 8.1.0(clang 802.0.42)
标签: Clang
clang-ast-matchers
我在文件中有以下struct定义:
template <class... EventArgs>
struct banana {
template <class... Args>
void operator()(Args&&... args) const {
_f(std::forward<Args>(args)...);
}
private:
std::function<void(Even
我有以下代码和命令
==> main.c <==
/* vim: set noexpandtab tabstop=2: */
#include <stdio.h>
void print();
int main() {
print();
return 0;
}
==> print.c <==
/* vim: set noexpandtab tabstop=2: */
#include <stdio.h>
void print()
标签: Clang
clang++llvm-clang
生成.map文件的in-Clang的等效标志是什么?这是我能想到的最接近Clang和链接器映射文件的标志
-Wl,-map,output.map到目前为止,clang不支持此标志。那么无法使用clang生成.map文件吗?
有人能在ST3上使用叮当吗。。。我有各种各样的错误。。。我在代码中做了一些更改以支持Python 3,但仍然无法使用
在这些改变之后,我已经到了一个阶段,我得到了以下错误
File "C:\Users\Nikhil\AppData\Roaming\Sublime Text 3\Packages\SublimeClan\clang
\cindex.py", line 86, in get_cindex_library return cdll.LoadLibrary('li
使用GCC编译时,ISR是通过使用中断属性标记来定义的,中断属性的向量号在msp430fr*.h标题中定义,该标题随TI发布的GCC工具链一起发布:
__attribute__ ((interrupt(TIMER2_A1_VECTOR)))
void TIMER2_A1_ISR (void) { ... }
但是,在使用LLVM/Clang编译以及使用GCC组装和链接时
clang -emit-llvm -c -MD --target=msp430 -D__MSP430FR5969__ -no
标签: Clang
tokenllvm-clanglibclang
我在哪里可以找到libclang中的令牌类型
例如,我知道存在以下令牌类型:
eof,r\u paren,l\u paren,r\u brace,l\u brace
我在哪里可以找到其余的代币种类
谢谢。在libclang中,令牌类型有CXToken\u标点符号,CXToken\u关键字,CXToken\u标识符,CXToken\u文字,以及CXToken\u注释。()
在clang中,在定义#define TOK(X)X后,可以通过预处理文件找到令牌种类列表。这样做会给我以下列表:
未知,
e
我实现了一个简单的重构工具,它可以将函数名替换为用户特定的名称
当我在测试代码上运行该工具时(没有任何头文件),它工作得很好
但是,如果在测试代码中包含头文件,
e、 g
我对此感到困惑,因为我只添加了一个“#include”
你能帮我检查一下故障信息吗?
提前谢谢 在分析stdio.h时,工具中应该有错误。快速技巧:你应该为你的代码编写一个带有必需func的假stdio.h,或者在这里提供关于你的代码的更多信息。在分析stdio.h时,你的工具应该有错误。快速技巧:您应该为代码编写一个带有必需
标签: Clang
abstract-syntax-treeclang-ast-matchers
我需要在块中查找自引用(目标C)。我使用了叮当作响的AST匹配器
查找我创建的所有自引用的匹配器如下所示:
declRefExpr(to(varDecl(hasName("self")))
现在我只需要将此匹配器应用于块。但我不知道怎么做。有人有什么想法吗?我已经通过以下匹配者解决了这个问题(在OCLint中):
最终我决定找到BlockExpr,而不是BlockDecl。因此,上面的规则在所有块表达式中查找自引用。
但我没有意识到在某些块中,self是有效的。例如,dispatch_once
标签: Clang
llvm-clangclang-ast-matchers
我正在写一个叮当作响的工具,但我对它还很陌生,所以我遇到了一个在文档中找不到的问题
我正在使用great Matchers API查找一些稍后要在AST中操作的节点。问题是,clang工具实际上会解析属于源文件的所有内容,包括iostream等头文件。
因为我的操作可能包括一些重构,所以我绝对不想触及解析器发现的每一件事情
现在我通过比较我匹配的节点的源文件和argv中的参数来处理这个问题,但是不用说,这感觉是错误的,因为它仍然解析所有的iostream代码-它只是在这样做时忽略了它。我简直不敢
标签: Clang
address-sanitizer
现在,我试图在clang++编译器中使用地址消毒剂的中毒功能。
我想我应该使用ASAN\u POISON\u MEMORY\u REGION宏,根据这个描述()。
然后,我写了一个简短的程序,如下所示
int main() {
int* data = new int[10];
// poisoning from data[5] to data[9]
ASAN_POISON_MEMORY_REGION(data+5, sizeof(int)*5);
for (i
我正在运行Centos 7,并试图构建hipSYCL(请参阅)
问题是hipSYCL需要从LLVM构建中获得cmake信息(通过LLVM_DIR cmake变量)。
这对我来说是个问题,因为构建LLVM需要大量35Gb的库和EXE。我没有那么多多余的记忆
我确实在Centos 7上找到了llvm-toolset-8.0的在线版本并安装了它,但令我惊讶的是,llvm_DIR似乎不起作用,因为没有cmake文件(因为我没有在本地构建它)
那么,我的问题是,有没有一种方法可以使用预先构建的LLVM c
我想在使用clang时同时使用-fbasic block sections=labels和LTO,但是似乎一旦启用LTO,该节就不会出现在结束二进制文件中
没有LTO:
$ clang -fbasic-block-sections=labels world.c -o world
$ readelf -S world | grep bb_addr_map
[26] .llvm_bb_addr_map LOOS+0xfff4c08 0000000000000000 000030b3
对于
我有一个C项目,它没有使用任何IDE。我想格式化我的项目。我看到,叮当格式将自动格式化文件。但我看不到任何地方如何在windows上安装它并在命令提示符下使用它。有人有这方面的文件吗?还有比这更好的开源工具吗
OpenMPI使用他们的包装器编译器。在幕后,他们的包装器编译器mpiCC调用gcc(默认情况下?),并为要编译的MPI代码添加必要的标志。但是,其他编译器比gcc提供更多的描述性错误消息(例如,它也与gcc兼容)。所以,我希望能够将clang与OpenMPI结合使用
我试过:
1) 正在查找用于指定编译器的mpiCC选项,但
mpiCC --help
只需弹出g++帮助页面
2) 使用--showme:compile选项
mpiCC --showme:compile ./test-boost
我一直按照上面的说明使用忍者来设置叮当声
一切都很顺利,直到我按照网页上的说明使用ccmake../llvm将Clang设置为自己的编译器(我在$TARGETFOLDER/Clang llvm/build/bin/Clang++中将CMAKE\u-CXX\u编译器设置为我最近编译的Clang++二进制文件)
之后,当我键入忍者时,会显示以下错误:
$ ccmake ../llvm/
$ ninja
[50/2561] Building C object lib/Support/CMakeFil
我在foo.c中有一个库foo:
int foo() { return 0; }
我想编译成一个静态对象foo.o。当我像下面这样直接做的时候,这是有效的
clang -c foo.c -o foo.o
但是,我想通过llvm字节码:
clang -emit-llvm -c foo.c # Compile to LLVM byte code
clang foo.bc -o foo.o # Compile LLVM byte code to native
最后一个命令失败,并显示
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 18 页