llvm-clang相关内容

如何以 JSON 格式表示 clang AST?

clang-check -ast-dump -ast-dump-filter=main.c 给出了特定代码的 AST(只是一个函数声明). 我们如何以 JSON 格式表示生成的 AST? PS:我只想要 AST 用于函数声明. 解决方案 使用 -ast-dump=json 参数调用 clang. 这是最近才实施的(2019 年 5 月),因此您需要最新版本的 Clang. ..
发布时间:2021-11-26 18:05:59 其他开发

Clang AST 访问者,避免遍历包含文件

您好,我正在尝试实现 AST Clang 访问者,这是我的代码. class ExampleVisitor : public RecursiveASTVisitor{私人的:ASTContext *astContext;//用于获取额外的 AST 信息民众:virtual bool VisitVarDecl(VarDecl *var){numVariables++;string varName ..
发布时间:2021-11-26 18:00:31 C/C++开发

如何使用 Clang 查找所有成员字段读/写?

给定一个 C++ 源代码,我想找到每个函数写入和读取的类字段.使用 Clang 前端执行此操作的最佳方法是什么? (我不是要求对所有步骤进行详细解释;但是,如果能找到一个有效解决方案的起点会很棒.) 到目前为止,我尝试使用 RecursiveASTVisitor 解析语句,但是很难跟踪节点连接.另外,我不知道如何跟踪如下内容: int&x = m_int_field;x++; 这显 ..
发布时间:2021-11-26 17:55:48 C/C++开发

Clang AST 解释

我正在尝试解释您可以在下图中看到的 Clang AST 的部分内容.简而言之,我想做的是检查两个变量在不同的程序点是否相同.检查 AST 后,我注意到 AST 部分之间唯一的共同点是蓝色圈出的部分. 谁能帮助我了解这些十六进制数字在 AST 中对应的内容?我知道第一个块对应一个变量声明,第二个块对应一个表达式.是否有 Stmt 和 Expr 类上的方法可以调用来获取这些十六进制数? 解 ..
发布时间:2021-11-26 17:51:29 其他开发

Clang AST 解释

我正在尝试解释您可以在下图中看到的 Clang AST 的部分内容.简而言之,我想做的是检查两个变量在不同的程序点是否相同.检查 AST 后,我注意到 AST 部分之间唯一的共同点是蓝色圈出的部分. 谁能帮助我了解这些十六进制数字在 AST 中对应的内容?我知道第一个块对应一个变量声明,第二个块对应一个表达式.是否有 Stmt 和 Expr 类上的方法可以调用来获取这些十六进制数? 解 ..
发布时间:2021-11-26 17:51:17 其他开发

将节点添加到 Clang 的 AST

我需要向 AST 插入新节点.例如,为函数添加命名空间:转这个 - void foo(); 进入这个 - 命名空间栏{无效的 foo();} 我阅读了如何克隆或创建clang 的 AST Stmt 节点? 但我不喜欢使用源到源编译 Tnx 解决方案 可以在这里找到答案http://clang-developer.42468.n3.nabble.com/Adding-nodes ..
发布时间:2021-11-26 17:47:07 其他开发

创建LLVM IR的方法

我正在创建 clang 工具,我想从 clang AST 生成 LLVM IR.我知道可以用来获取 *.ll 文件的 -emit-llvm 选项,但是有没有办法在代码中生成 IR?我可以调用的一些方法接受 clang AST 或 AST 上下文并返回 llvm::Module?我找不到任何可以说明这一点的示例. 已编辑:所以我尝试为此使用 CodeGenAction,但我无法让它工作.我最终 ..
发布时间:2021-11-26 17:43:27 其他开发

无法使用 clang++ 交叉编译代码

命令: 我正在尝试使用 clang++ 交叉编译一个简单的 C++ 程序.我正在使用 Linaro gcc 工具链来获取库和其他所需的包含. ${root}/bin/clang++ --target=arm-linux-gnueabihf --rtlib=compiler-rt --stdlib=libc++ -nostdinc++ -I${root}/include/c++/v1 -wl ..
发布时间:2021-11-17 22:38:34 其他开发

在 iOS 上使用 NEON 乘法累加

即使我只为 armv7 编译,NEON 乘法累加内部函数似乎被分解为单独的乘法和加法. 我在使用 Xcode 5 到 6 以及不同的优化设置(通过 Xcode 和直接通过命令行构建)的多个 Xcode 版本(最高至最新 4.5)中都遇到过这种情况. 例如构建和反汇编一些包含 的test.cpp #include float32x4_t 测试( float32x4_t a, floa ..
发布时间:2021-11-17 22:15:40 其他开发

Xcode 4 - 归档应用程序时出现链接错误

我们已经使用 Xcode 4 和 LLVM 2.0 几个月了,在完成对我们的应用程序的重大更新后,我们认为我们会将其发送给 Apple. 然而,我们无法想象的是,虽然该程序能够为模拟器和设备构建,但在归档时,XCode 只是抛出了一个令人讨厌的链接错误,让我们挂在那里. 该错误与 ZipKit 库有关(我们之前讨论过使用 使其在 XCode 4 下工作). 这是我们得到的: l ..
发布时间:2021-11-17 03:19:19 其他开发

llvm-将参数传递给传递

我需要告诉通行证在文件中查找特定功能.我想指定要在旅途中寻找的功能,即运行通行证时.知道我该怎么做吗?这有点像理论上向函数传递参数. 解决方案 使用 cl :: opt 添加命令行选项,并在运行密码时进行设置. 或者,如果要使用clang从C或C ++生成IR,则可以使用 __ attribute((__ annotate __(("foo"))))来标记您感兴趣的 ..
发布时间:2021-05-30 19:39:01 其他开发

如何使用Clang的C ++ API从文件名/行/列三元组中获取SourceLocation

libclang C API为此目的具有以下功能: CXSourceLocation clang_getLocation(CXTranslationUnit tu,CXFile文件,无符号的行,无符号列) 我找不到C ++ API的等效项.有许多 getLocation 函数,但没有一个采用这组参数. 如果存在,我最终将尝试在给定的源位置获取 DeclRef . 解决方案 ..
发布时间:2021-04-22 18:43:37 其他开发

如何在Winodws上使用MINGW构建Clang?

我正在尝试在Windows 8上使用MINGW从源代码构建clang. 我从llvm的官方页面上下载了clang的源代码和其他必要的工具 clang-llvm源代码: git clone https://github.com/llvm/llvm-project.git 我下载了 cmake和ninja ,就像在下一页 http://clang.llvm.org/docs/Li ..
发布时间:2021-04-22 18:43:27 其他开发

R:无法更新包clang找不到头文件

我有几个R软件包无法从源代码更新/完成.以下是错误消息的摘要; clang ++ -std = gnu ++ 11 -I"/usr/local/Cellar/r/3.5.2_2/lib/R/include" -DNDEBUG -I"/卷/文档/用户/akihoji/库/R/3.x/库/Rcpp/include"-I"/卷/文档/用户/akihoji/Library/R/3.x/library/ ..
发布时间:2021-04-22 18:42:47 其他开发

CMakeList文件从C源文件生成LLVM位代码文件

我正在尝试使用CMake从C源文件(hello.c)生成LLVM字节码文件.下面是我的CMakeLists文件. ###### CMakelists.txt ############cmake_minimum_required(版本2.8.9)设置(CMAKE_C_COMPILER"clang")设置(CMAKE_C_FLAGS"-emit-llvm")项目(您好)add_executable ..
发布时间:2021-04-22 18:41:56 其他开发

使用Apple的LLVM编译器-O而不是g ++ -7.2.0编译-O时,C ++代码段出错

更新:我创建了一个甚至更多的M,但仍然是CVE,可以重现崩溃.摘要:删除了对 Base 类中的 Bool * bools _ 字段的所有使用(但仍必须定义它,否则不会发生崩溃).还从 Base 及其子代中删除了 Base :: Initialize()和虚拟方法 Rule .附加了新的MCVE. 我已经设法为此代码创建了一个MCVE并将其发布在下面. 一些描述性的细节:代码使用虚拟基类 ..
发布时间:2021-04-22 18:40:43 其他开发

lang语AST解释

我正在尝试解释您在下图中看到的Clang AST的某些部分.简而言之,我想做的是检查两个变量在不同的程序点是否相同.在检查AST之后,我注意到AST部分之间唯一的共同点是用蓝色圆圈圈出的部分. 有人可以帮助我了解这些AST对应的十六进制数字吗?我知道第一个块对应于变量声明,第二个块对应于表达式.在Stmt和Expr类上是否可以调用这些方法来获取这些十六进制数字? ..
发布时间:2021-04-22 18:40:33 其他开发

LLVM编译器2.0上的-fobjc-nonfragile-abi2:unknow参数?

我尝试使用LLVM编译器2.0在Xcode上构建我的项目,并且出现此错误: 错误:未知参数:'-fobjc-nonfragile-abi2' 我对LLVM编译器并不熟悉,有人吗有解决方案吗? 删除参数不能解决我的问题,因为在这种情况下我的代码有错误。 解决方案 不再需要该选项,因为它是最新版本的LLVM中的默认设置。 ..
发布时间:2020-10-01 22:53:52 其他开发

无法使用clang ++交叉编译代码

命令: 我正在尝试使用clang ++交叉编译一个简单的C ++程序。我正在使用Linaro gcc工具链来获取库和其他必需的库。 $ {root} / bin / clang ++ --target = arm-linux-gnueabihf --rtlib = compiler-rt --stdlib = libc ++ -nostdinc ++ -I $ {root} / in ..
发布时间:2020-10-01 22:51:04 其他开发