llvm-clang相关内容

LLVM-如何将AST转换为IR

我知道解析器生成的AST用于在前端生成IR。 我想知道如何解析AST,然后将其转换为IR(探测程序集或位码), AST是树,从AST到IR转换涉及哪些步骤。 推荐答案 发射LLVM IR from Clang ASTs发生在朗氏code gen阶段。此阶段的代码位于lib/CodeGen/中(相对于Clang的源根目录)。不需要解析AST,因为Clang在内存数据结构中具有 ..
发布时间:2022-03-21 22:27:31 其他开发

框架的私有模块映射

我正在使用 this answer 创建一个模块映射来为 CommonCrypto 创建一个模块,这样我就可以在一个框架. 但是,这样做意味着我使用此框架的任何项目都可以通过 import CommonCrypto 访问 CommonCrypto - 更糟糕的是,在另一个框架中声明 CommonCrypto 并将其导入项目会导致 重新定义模块“CommonCrypto" 错误. 即以下 ..
发布时间:2022-01-16 20:30:58 移动开发

用clang编译CUDA

我是 LLVM 新手.听说clang支持CUDA.如何使用 clang 编译 CUDA?我是否必须进行一些配置更改或包含任何特定的头文件?我在网上找不到有关此的任何信息.有可能吗? 现在,当我尝试使用 clang as 编译一个虚拟 cuda 程序时 clang -I/usr/local/cuda/include 文件名.cu 我收到以下错误 未知类型名称 '__global__'_ ..
发布时间:2022-01-10 15:42:48 其他开发

使用 xCode 5 编译 protobuf

我想在我的项目 你用xCode 5成功编译protobuf了吗,请帮忙分享一下你的经验? 谢谢. 解决方案 如果您不介意自己构建 Google Protobuf,那么使用 Cocoapods 的一个不错的替代方法是在此处运行 bash 脚本. https://gist.github.com/BennettSmith/7150245 此脚本将生成支持 i386、arm ..
发布时间:2022-01-07 18:30:04 移动开发

如何从内核树中构建 BPF 程序

内核在samples/bpf 中提供了许多示例.我有兴趣在树之外构建一个示例,就像我们构建一个内核模块一样,其中 Makefile 可以很简单.可以对 bpf 做同样的事情吗?我通过从 samples/bpf/Makefile 中删除不必要的部分并保持对 libbpf 和其他人的依赖来尝试它,但结果证明并不是那么容易. 例如,尝试在内核树之外构建samples/bpf/bpf_tcp_ker ..
发布时间:2022-01-04 22:45:06 其他开发

如何以 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 查找所有成员字段读/写?

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

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 其他开发

在 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 其他开发