有一些与高能物理不同的使用案例的视频:(我认为第一对是相关的)有一些与高能物理不同的使用案例的视频:(我认为第一对是相关的)它可能非常有用,但它非常年轻。我找不到任何文档,没有专门的邮件列表,也没有在线教程。我能够运行小的玩具代码,但还不知道如何在大型库中高效地使用它 它可能非常有用,但它非常年轻。我找不到任何文档,没有专门的邮件列表,也没有在线教程。我能够运行小的玩具代码,但还不知道如何在大型库中高效地使用它 GRANG项目是一个成熟的项目。你可以在他们的官方网站上找到更多信息。他们也有一个
linux程序取决于其构建环境。如果您的glibc版本或内核不同,那么有很多可能无法运行可执行文件。您可以使用llvm的解释器语言,它编译成字节码,可以在各种操作系统上进行解释。linux程序取决于它们的构建环境。如果您的glibc版本或内核不同,那么有很多可能无法运行可执行文件。不过,您可以使用llvm的解释器语言,它编译成字节码,可以在各种操作系统上进行解释。答案是,嗯,这取决于具体情况
第一个硬需求是相同的CPU架构。64位是不够的限定符。如果编译x64,那么在64位ARM上运行它不会有多
标签: Clang
abstract-syntax-tree
我对叮当声很陌生。如果这个问题听起来很傻,请原谅
我试图写一个简单的叮当声检查
我有一个简单的程序
void function(int a)
{
printf("%d", a);
}
main()
{
static int A = 0;
//some computation
//How to get the source of the variable declaration of A here?
func(A);
标签: Clang
c++builderclang++
我正在创建一个DLL并导出一个SimpleMAPI DLL函数,其中一个函数签名如下:
extern“C”ULONG declspec(dllexport)WINAPI MAPISendMail(LHANDLE lhSession、ULONG PTR ulUIParam、lpMapiMessage lpMessage、FLAGS flFlags、ULONG ulReserved)
我使用C++ Builder,使用CLAN编译器。编译器问题警告:
[bcc32c警告]:“MAPISendMail
我正在写一个自我教育的小项目。它与叮当声和LLVM内部攻击有关。
但是当我调查代码库和阅读文档时,构建过程中发生了奇怪的事情
对于初学者,我尝试为SPARC目标构建LLVM和Clang。但这项相当简单的任务却很有挑战性
我使用稳定版本3.4.2中的源代码,文件夹树如下所示:
llvm/
...
projects/
...
test-suite <-- test-suite-3.4.src.tar.gz extracted here
t
我有一个LibTooling(timelag),用于为每个forstmt/whilestmt添加一个标志。我使用/timelag lalalala.cpp--在lalala.cpp中插入标志
不幸的是,此工具还将更改标头,甚至更改系统库
那么,是否有一些方法可以让LibTooling只处理输入文件?这里有两种可能性:如果使用RecursiveASTVisitor,可以使用SourceManager确定语句或声明的位置是否在主扩展文件中:
clang::SourceManager &sm(
我正在尝试使用clang构建ChibiOS,但目前我被困在下面的链接错误中。
链接build/ch.elf
clang-7:警告:编译期间未使用参数:'-nostartfiles'[-Wunused命令行参数]
/home/quest/clang_build/clang_all/build/bin/ld.lld:错误:找不到库-lclang_rt.builtins arm.a
clang-7:错误:ld.lld命令失败,退出代码为1(使用-v查看调用)
../../../os/common/st
我有一些非常可爱的C99代码,它们是从多个.c文件编译而来的,当我使用Clang 2.7编译时,我会遇到一些非常奇怪的错误:
/usr/include/bits/stdio.h:77: multiple definition of `putchar'
a2test.o:/usr/include/bits/stdio.h:77: first defined here
所发生的事情是,的GNU libc头文件将某些函数(包括putchar)声明为extern\uuuuu inline\uuuu,出
标签: Clang
xcode4.3llvm-clang
如何配置Xcode 4.3.2以使用主干提示音(或比Xcode 4.3.2附带的提示音更晚的任何提示音)?使用与发布版捆绑在一起的Python脚本集Xcode analyzer。但请注意,这可能取决于您安装的Python版本:使用与上的版本捆绑在一起的Python脚本集xcode analyzer。但请注意,这可能取决于您安装的Python版本:
标签: Clang
llvm-clangclang-static-analyzer
在下面的代码中,我使用ClangAPI解析C代码,然后尝试
1) 向代码中添加HTML页眉和页脚,以便在浏览器中查看
2) 获取IF语句的THEN部分的行号并打印它
我在(2)方面有困难。我无法理解输出的意义。对于以下输入(添加了行号),我得到的输出(相关)如下
电话号码是6
电话号码是6
电话号码是6
电话号码是6
电话号码是12
电话号码是12
电话号码是12
电话号码是12
我希望分别是4和8。有人能解释我错在哪里吗
我的输入如下(请删除行号或转到)
%nl myinput.c
1#包
我一直从链接器中获取以下错误:
Undefined symbols for architecture armv7:
"___clear_cache", referenced from:
但是当我做下面的事情时
#if __has_builtin(__clear_cache)
#error clear cache is defined
#endif
我得到这个确认:
/Users/myHome/Projects/proofOfConcept/coreEngine/icache.c:66:2
apt-get-method:我正在尝试在Ubuntu 15.10上安装LLVM和Clang。我使用了命令sudo-apt-get-install-llvm和sudo-apt-get-install-clang。这似乎奏效了,只花了几分钟
手动方法:然而,大多数在线说明都让我手动下载并构建LLVM和Clang包(例如,请参见此处:)。我知道这种方法可能需要一些时间,甚至需要几个小时来构建LLVM和Clang
这两种方法有什么区别?它们相等吗?我只是想确保所有的东西都安装正确。(我的背景是Wind
我正在尝试将以下内容链接在一起:
libFuzzer.a,使用clang++-5.0和-std=c++11
我的fuzz驱动程序,用clang++-5.0和-std=c++11-stdlib=libc++
libcurl,用clang-5.0编译
具体而言,正在执行此链接器命令:
/bin/bash../../libtool--silent--tag=CXX--mode=link clang++-5.0-I../../include-I../../lib-I../../lib-I../../
我想实现一个基于Clang的解释器。我遇到了一个问题。我创建一个map来存储vardecl及其对应的int值。但是当我访问callExpr时,函数callExpr.getArg的返回类型是expr,我想将其强制转换为decl类型。我怎样才能解决这个问题
范例
int a = 10;
int main(){
PRINT(a) //self-define function
}
mymapdecl[a]=10,但PRINTExpr.getArg类型为expr。
我使用dyn\u cast(左)获
标签: Clang
llvm-clanglibtoollibtooling
我正在制作一个叮当作响的libtool,
我如何获得预处理器信息来告诉我给定的Decl是否在#if#ifdef#ifndef的范围内?不幸的是,没有简单的答案。Clang在AST级别并不完全了解任何预处理器指令
据我所知,您所能做的最好的事情就是实现一个PPCallbacks类,向编译器实例预处理器注册它,并实现If、Elif、Endif的函数
然后,您可以使用ASTVisitor查找这些源位置之间的所有内容
如果我有这个例子:
int a=0, b=0;
a和b是局部变量,可对其值进行任何修改,例如:
a++;
b++;
在运行MCJIT期间,我需要获取此行代码中的值
我所说的值不是value类,而是实际的整数或任何类型的值。在执行语句后,在要检查值的位置放置一个断点。在控制台中(lldb)po
虽然我认为监视点更适合您的需求,但是为变量添加一个监视点,比如,watchpointset variable您需要从JITed LLVM函数返回值,以便从调用MCJIT的代码中检索它
看看这个
相关代码
在我目前正在进行的项目中,我们已经决定使用-Werror标志,因为我们以前的“无警告!”策略没有按预期效果运行
然而,这带来了一个特定的问题:
API不能再以a)被普通构建工具链标记,b)不会破坏构建的方式标记为不推荐使用
所以我想问题可以归结为:
是否有类似于-Werror no-${something\u I\u不想\u升级为\u错误}?
我发现#pragma-clang诊断错误几乎达到了我想要的效果-除了未能捕获编译器隐式启用的所有警告之外
提前感谢。:
-Wno error=foo:将警
我有点惊讶,我找不到多少关于如何使用llvm从头开始构建跨体系结构或跨操作系统编译器的信息。llvm本身就是开箱即用的。然后您只需要从目标系统收集sysroot,然后以某种方式生成并集成跨平台的binutils
虽然我有大量的随机用例,但我最讨厌的是CodeSourcery。。。基本上不再以arm/linux为目标,构建在Windows上 我正在开发一个基于clang/LLVM的交叉编译工具链。它目前运行在各种Linux平台(ARM、Mips、PowerPC、x86)和Windows x86上。
标签: Clang
warningsmessagepragma
#pragma消息以叮当声作为警告实现。
是否有任何方法仅对此pragma禁用警告,这样它将像MS Visual Studio一样,或以其他方式从代码中提供信息性消息?
(我需要一个答案作为一个最终用户与给定的叮当声,我不能在这个项目上重新编译叮当声本身)
谢谢你的帮助。我知道这篇文章已经发布一年了,OP可能已经找到了他的答案,但因为我自己也在寻找答案,所以我想我还是把这些信息放在这里吧
从Clang用户手册中:
pragma可以控制可从命令行使用的任何警告。警告可以设置为忽略、警告、错误或致
我正试图从llvm的示例中编译fibonacci.cpp,以在我的系统(4.6.4-1-ARCH)上测试llvm 3.8(从repo安装)
我得到以下错误。我四处寻找llvm配置参数中缺少的内容,但我并不幸运
下面,我将提供命令run及其输出:
[drunk@teapot LLVMPlayBox]$ clang++ fibonacci.cpp `llvm-config --cxxflags --ldflags --libs --system-libs engine` -o fibonacci
我已经用-O0优化将C代码编译成LLVMIR代码
如何将此-O0LLVM IR代码转换为-O3LLVMIR代码“无C代码”
我试过以下方法:
clang -O3 -S -emit-llvm O0.ll -o O3.ll
及
但是输出仍然是-O0级别
谢谢。我不确定更改是什么时候发生的(我认为是LLVM3.9.0及更高版本),但是当您编译为位代码时,函数会被注释为optnone属性,不会执行进一步的优化
查看相关的SO讨论
建议这样做:
clang -emit-llvm -O1 -mllvm -
我正在寻找一种方法,在编译期间将默认标准库切换到自定义库,而不使用外部脚本
我想将默认标准库切换为Boost或Facebook Folly,两者似乎都包含在默认标准库中。需要注意的是,它们使用自己的前缀,如boost::或folly::而不是std::
正在讨论的编译器是叮当作响的++
出于性能原因,我需要这样做来对自定义库进行基准测试,但我不想手动将整个代码库重构为自定义标准库
我喜欢在代码中保留std::,这样其他开发人员就不会感到困惑
这是否可以在clang中实现?创建一个名称空间nots
我想在Clang中尝试一些新功能,有人提到我是ClangTot
现在这可能是一个很明显的问题,因为到底什么是clangtot
TOT一定是我不熟悉的缩写词
有人能给我一些启发吗?可能是指“树的顶端”,就像源代码库中的最新代码一样。如果我是他们,我会选择后者!:)我想是这样的。只是以前从未见过。这并不常见,但无论出于什么原因,在LLVM和相关项目中,都习惯这样称呼它。许多LLVM开发人员在苹果工作,而当我在苹果时,TOT的使用就像@martin所描述的一样,非常一致。我想这只是本地风味吧!
标签: Clang
llvm-clangclang-static-analyzer
我有一个c文件,我想写一个检查器来检查该文件中的每个函数是否有原型。有谁能帮我做那件事吗。我对叮当声很陌生。我对C++模板、类以及所有的东西有基本的了解。我访问了一些帮助链接,但不是很有用。任何形式的帮助都将不胜感激。请回答此问题?“询问代码的问题必须表明对正在解决的问题的最低理解。包括尝试的解决方案、为什么不起作用以及预期的结果。”
clang格式有两个选项,称为BinPackParameters和
BinPackArguments。它们似乎控制着函数声明和函数调用的缩进方式
BinPackParameters似乎为函数声明提供了预期的结果,但BinPackArguments似乎并不像人们预期的那样为函数调用工作
下面是一个简单的测试文件:
#include <stdbool.h>
void function_with_a_huge_name_that_should_just_not_be(unsigned i
我创建了一个非常简单的基于Clang Libtool的程序,它构建AST并将AST转储到控制台
我正在使用以下命令编译/链接位于LLVM/Clang源代码树外部的程序,以对抗其中一个预构建的二进制文件-
c++ -DCLANG_ENABLE_ARCMT -DCLANG_ENABLE_OBJC_REWRITER -DCLANG_ENABLE_STATIC_ANALYZER -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_GLOBAL_ISEL -D_DEBUG -D_GNU_SOU
标签: Clang
llvm-clanglibtooling
我正在使用Clang/libtooling(ASTComsumer和Matcher)访问所有return语句(ReturnStmt)。我需要以字符串形式提取关键字return后面的表达式,这样我就可以将它放在替换return语句的宏中
例如,我想替换以下行:
return somefunc() + 1;
与
完成一些日志记录后,宏将从函数返回
我正在使用ReturnStmt::getRetValue(),它返回一个Expr,并试图以字符串形式获取它(以便可以将它传递给宏),但我还没有找到方法。
使用Windows下的Visual Studio,可以使用DelayImp.lib提供的链接标志“/DelayLoad somelib.lib”延迟加载库和函数
在后台,这样做似乎告诉链接器使用Win32 API LoadLibrary和GetProcAddress包装“somelib.lib”的每个引用函数,这允许在运行时解析函数
我需要在Windows下使用clang实现同样的功能,但是没有找到任何关于这个主题的文档
使用clang/LLVM延迟加载库是可能的,如果是,如何延迟
出于好奇,这
我有两个LLVM过程,一个需要另一个的输出。因此,在PassB中,我有:
void DiscoPoP::getAnalysisUsage(AnalysisUsage &Info) const{
Info.addRequired<PassA>();
}
如果我也在clang中加载PassA,它会工作:clang-Xclang-load-Xclang LLVMPassA.so-Xclang-load-Xclang LLVMPassB.so
但是如果需要从PassB手动加
我想了解参数是如何以.ll文本格式传递给函数的
我的c函数原型如下所示:
int power(int n, int r)
clang(后跟opt)编译为:
define i32 @power(i32, i32) #0 {
“n”和“r”已经消失了!我需要它们在这里,在文本IR中
否则,理解这些参数的实际使用方式并不是一件小事
或者可能有一个模糊的约定,比如函数的第一个参数是“%1”,等等,但这似乎并不明显
有什么想法吗
是否有一个命名约定或任何东西来理解我的“c”参数是如何映射到函数头中的.
标签: Clang
ninjameson-build
我已经创建了一个简单的项目来让自己习惯介子,但是构建一直失败
这就是我所做的(设置环境和构建):
我的meson.build如下所示:
project('EtaClient', 'c')
src = ['src/main.c', 'src/linkedlist.c']
executable('EtaClient', src)
target = 'x86_64-pc-windows-msvc'
生成时,我遇到以下错误(obj文件已成功生成,但它们未链接,因此未生成exe):
当我查看我的buil
在clang中,是否有一种方法可以启用边界检查[]对std::vectors和其他STL容器的访问,最好是在仅以调试模式构建时
我只是花了几个小时寻找一个微妙的bug,结果是由于我们访问了std::vector的末尾。当它检测到错误时,不需要做任何聪明的事情,只需在调试器中设置陷阱,这样我就可以找到错误发生的地方并在代码中修复它
除了“创建从std::vector继承的您自己的类型”之外,还有其他方法可以做到这一点吗
(如果有区别的话,我使用的是clang 3.1版。)
这将启用所有类型的内联检
我必须在某些语句之前添加一个语句,从而使其发出铿锵声。我有一个指向Expr对象的指针,我需要使用它在包含它的语句之前插入另一个语句。现在我使用的是一种黑客方法,它只是将SourceLocation指针向后移动,直到我看到一个;或}或{。但这并不适用于所有情况。例如,当我尝试插入for语句时,它失败了。clang中是否有任何类提供了一种更干净的方法来实现这一点
编辑:这是我的代码片段。我需要在包含指针取消引用的语句之前插入一个断言
bool MyRecursiveASTVisitor::Visit
从git获取当前Blender master并运行/Blender/build\u files/build\u environment/install\u deps.sh在我的Fedora 20系统上运行正常,直到出现Open Shading Language编译,失败并出现以下错误:
/opt/lib/llvm-3.3/bin/llvm-as: /home/simonrepp/src/blender-deps/OpenShadingLanguage-1.4.0/build/src/libosl
标签: Clang
abstract-syntax-tree
我想匹配在AST上具有作为子代的调用表达式的任何语句。下面是一个简单的例子:
int foo() {
return 5;
}
int main() {
int a;
a = foo();
return 0:
}
在这个例子中,我想匹配a=foo()语句。为此,我创建了以下matcher,它工作正常:
StatementMatcher sm = stmt(hasParent(compoundStmt()),
hasDesce
我是clang新手,我想使用astmacher重命名成员变量名。例如:
class Person
{
public:
....
private:
char m_genger;
^^^^^^^^ => rename to gender_
int m_age;
^^^^^^ => rename to age_
};
在阅读了一些教程之后,我发现了如何使用ASTMatcher,以便访问要修改的位置
但我有一个赛格。调用cla
我想构建一个程序(YCM for VIM),它需要编译的二进制文件来链接。出于某种原因,我不能使用llvm本身提供的预编译版本进行下载(我已经测试过了,它不起作用),所以我想先构建Clang,然后再构建YCM,两者都使用gcc。
对于要构建的YCM,我需要以与llvm提供的预编译包中相同的方式编译Clang文件,即应该有以下文件夹:
bin docs include lib share
其中包含相应的文件。
现在,我可以使用以下命令构建llvm和Clang:
mkdir llvm &a
使用clang-3.5.0(但不是gcc-4.9.2,也不是英特尔编译器),我得到的信息是:
use of undeclared identifier '_mm_cvtsi64x_si128'; did you mean '_mm_cvtsi64_si128'
这是我在中发现的一个内在特性,并且所讨论的代码确实包含了intinsics指南中所要求的内容:
#include "emmintrin.h"
我想知道这个错误是否是由于没有传递正确的-mcpu=flags导致的,但是我尝试了-mcpu
我尝试对函数体进行一些重写,现在只想以源代码形式打印该函数体。我尝试过使用dumpPretty,但它似乎可以在没有重写的情况下打印原始源代码。有没有人对此有什么建议?看看源代码,dumpPretty似乎从AST重建了文本。要以这种方式变换身体,我必须直接修改AST
我知道的参考资料如下:
但是我找不到像-msse4.1这样的标志,所以在clang.llvm.org上是否有支持的标志的完整列表,或者我们是否需要外部文档?使用CTRL+F查找-m目标标志
可能的重复:
标签: Clang
Llvm
llvm-clangclang-ast-matchersclang-query
我想找到所有case语句都没有break语句。我使用clang查询来构建匹配器。我的matcher在一些测试用例中失败了
我写了一个简单的matcher作为
匹配caseStmt(除非有(breakStmt()))
它适用于以下测试用例
#include<stdlib.h>
int main(){
int x;
switch(x){
case 1:
break;
case 2:
default:
x++;
}
return 0;
}
不
考虑以下C程序:
#include <stdlib.h>
int main() {
int * ptr = malloc(8);
*ptr = 14;
return 4;
}
对malloc的调用消失了,因为它是clang知道的一个内置函数。
如果我们运行clang-S-emit llvm-O1-fno builtin,我们将:
clang不知道什么是malloc,必须让电话留在家里
如何使用LLVM的opt命令从第二个LLVM程序到第一个LLVM程序?我
标签: 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>
^
#包括
^
有人能帮我
标签: Clang
travis-ciignoreclang-format
我目前正在使用travis ci检查进入github的补丁程序,并试图找出是否有任何原因让clang format 3.9(因为travis ci目前只支持最新版本的ubuntu 14.04)在扫描更改时忽略整个目录或文件
My.travis.yml文件:
language: c++
sudo: required
dist: trusty
install:
- sudo apt-get update
- sudo apt-get install clang-format-3.9 python3
我有一个文件,我想从中提取其文件名。显然,我应该可以通过使用的。然而,当我处理一些头文件时,结果似乎总是一个空字符串
我遵循源代码,发现问题在于getFilename函数中,该函数的内容如下:
/// Return the filename of the file containing a SourceLocation.
StringRef getFilename(SourceLocation SpellingLoc) const {
if (const FileEntry *F = get
标签: Clang
cross-compilinggnu-coreutils
我非常需要为其他arch使用llvm编译Coreutils:arm/aarch64/mips/mips32/ppc/ppc32
因为我安装了所有的gcc交叉工具,比如mips linux gnu,powerpc64 linux gnu,如果我有一个简单的C程序,比如test.C
#include<stdio.h>
int main(){
printf("hello!");
return 0;
}
我尝试以同样的方式编译Coreutils,它尝试设置
export C
我把我看到的问题归结为一个小例子。下面是我正在使用的LLVM汇编程序代码(在foo.ll中):
然后,我使用以下工具进行编译:
clang -O1 -o foo foo.ll
。。。当我运行它时,我得到:
Illegal instruction (core dumped)
。。。因此,我启动了调试器,并看到以下内容:
Program received signal SIGILL, Illegal instruction.
0x00000000004004d0 in main ()
(gdb)
libc++是否支持在以Clang/LLVM为本机的Windows上引用/包含和编译?对于土生土长的人来说,我的意思是不依赖明格和西格温。我没有找到太多关于这个的文档,但我相信它应该得到支持,因为clang for Windows已经发布很长时间了。只是一个更新。现在有实验支持(2018年初):
(来自链接)
假设您已经签出了Ninja和libcxx/llvm,那么libcxx可以通过
> cmake -G Ninja
标签: Clang
Llvm
abstract-syntax-treellvm-clangclang-static-analyzer
我试图使用clang语句匹配器在嵌套循环中查找变量
for(i=0;i<10;i++)
for(j=0;j<10;j++)
//I have i and j
for(i=0;i据我所知),如果不为要匹配的每个可能深度N创建N个匹配器,就无法匹配N-nested for循环。
例如
方法以确保循环初始化、条件化和递增相同的变量
static bool areSameVariable(const ValueDecl *First, const ValueDecl *Se
尽管podspec同时定义了source={:submodules=>true}和pod\u target\u xcconfig={'SWIFT\u INCLUDE\u PATHS'=>'$(PODS\u ROOT)/SpokeStack/filter\u audio/**,但SWIFT编译器似乎找不到filter\u audiogit子模块的模块名(在子模块的modulemap中定义)当从CocoaPods调用时。这在正常的xcodebuild调用中不是问题
复制步骤
git克隆https:/
1 2 3 4 5 6 ...
下一页 最后一页 共 10 页