问题标签 [llvm-clang]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clang - 如何在访问*方法中获取语句的基本块 ID
当我们覆盖 visit* 方法时,我们如何获取语句的基本块 ID(blockID)?
例如,对于下面给出的基本块,当访问 VisitIfStmt() 时,如何在此访问方法中获取 blockID?
[B4]
1: x == 0
T: 如果 [B4.1]
Preds (1): B6
Succs (2): B3 B2
c++ - Exact differences in c++11 support when using libc++ versus libstc++ on Apple llvm 4.1?
Can anyone suggest a way to determine the differences in c++11 support when using libc++ versus libstdc++ that ship with the Apple LLVM compiler?
In particular, I am currently using LLVM 4.1 that ships with Xcode 4.5.2.
Presumably, the answer depends in part on the level of c++11 support offered by clang for this version, and in part on the version of libc++ and libstdc++ were shipped with 4.1.
My general sense is that c++11 support is "nearly complete" these days when using libc++, but that you lose something when switching to libstdc++, but i can't figure out what -- a few simple c++11 features seem to work fine on both.
I get the sense that the c++11 support for the libstdc++ that ships with gcc 4.8 is pretty good, but I have no idea if the libstdc++ that ships with llvm 4.1 is old or not.
Also, I get the sense that there is no difference in the level of c++11 support (using llvm 4.1 with libc++) when compiling for osx or ios 6.01, but I'm not positive.
Any suggestions on how to figure all this out?
[Context: due to upstream dependencies,I might need to link to libstdc++ instead of libc++, so I want to figure out what I might be losing]
llvm - 使用 indvars 优化过程在 llvm/opt 中查找规范归纳变量
我正在尝试使用 L->getCanonicalInductionVariable() 在给定其参考 L* 的情况下获取循环传递中循环的规范归纳变量。
但是我遇到的许多循环都不是规范的形式。例如:
根据 llvm 文档http://llvm.org/docs/Passes.html#indvars-canonicalize-induction-variables),使用“opt”中的“indvars”传递应该通过将循环归纳变量转换为规范形式来解决问题. 我试过运行:
其中“test.bc”是上述for循环的位代码格式。但是indvars pass好像没有效果(这里我省略了汇编代码,但是我查过了)。
稍后,使用 L->getCanonicalInductionVariable() 返回 null。我也尝试过将“indvars”与“loops”、“loop-simplify”等其他通行证一起使用,但无济于事。
关于如何让它发挥作用的任何想法?
llvm - 使用 clang 将 Apache httpd 编译成 LLVM 字节码
我想使用clang将httpd编译成 LLVM 字节码。首先,我尝试使用gcc对其进行编译,为此我执行了以下操作:
并且安装成功!
现在,我尝试使用 clang 编译它,为此我执行以下操作:
而且,配置本身失败。我选择了-O4,因为我读到 LLVM 输出字节码,如果你使用 -O4 或 -emit-llvm 作为 CFLAGS(它们都不工作)。
这是我得到的错误:
这与链接器无法链接 LLVM 字节码文件有关吗?
llvm - 在clang中为-O4做了哪些优化?
我们正在尝试实现一个 jit 编译器,其性能应该与使用 clang -o4 相同。有没有一个地方我可以很容易地获得指定了 -o4 的 clang 调用的优化通道列表?
llvm - 尝试在 llvm 中运行 jited 代码时缺少符号 __Unwind_resume 和 __assert_fail
我们正在尝试调整 clang-llvm 解释器代码,以运行一些使用 stl 向量和 c++ 字符串等的 c++ 代码。这导致了许多未解析的符号,在消除了一堆之后,我们仍然卡在 __Unwind_resume 和 __assert_fail
我真的很感激任何帮助解决这个问题。
注意:我们在需要被 jitted 的代码中包含问题,因此我们运行 clang++ 对其进行预处理,其输出是一个不依赖于本地包含的单个 c++ 文件。不确定这是否带来了一些问题。
注意 2:这是在 Ubuntu 12.01 上,我们尝试使用 clang+llvm 3.1 和 gcc 4.6.3 编译 clang 解释器
clang-static-analyzer - 如何通过 llvm 生成人类可读的中间代码
我想使用 clang 以人类可读的形式打印出抽象语法树,不想要二进制字节码。
我用过:
- ast打印
- 转储
但他们提供不可读的代码..
有人能帮忙吗?
objective-c - 编译时检查 Xcode 中的有效文件引用
是否可以强制 Xcode 编译器验证代码中引用的文件是否有效?
当您通过 NSString 以编程方式自然地引用文件时,Cocoa 开发中有多个要点:
在编译时有什么方法可以检查这些文件引用是否有效?
经常使用上述方法后,我最终更改了引用文件的名称,但忘记在代码中更改名称。一切都没有问题,只有当您碰巧访问访问此文件的应用程序部分时,错误才会显示出来。
人们是否使用另一种方法或技术来避免此类错误?
通过字符串引用文件名感觉非常脆弱。
c++ - 使用 libclang,如何启用和禁用特定警告?
我正在尝试使用 libclang API 以编程方式分析 C++ 项目。我的clang编译得很好,我的工具正在正确解析生成的AST,但我不知道如何打开/关闭特定的警告。
这是相关的代码片段,我想启用/禁用“未使用的变量”警告: