13得票1回答
什么是间接跳转语句?

在Clang API中,有GotoStmt和IndirectGotoStmt。这两种goto语句之间的区别几乎没有解释。我知道什么是goto label;语句。但是什么是间接goto语句?我想知道在C / C ++代码的上下文中它是什么意思,不仅仅是Clang。在语法上,拥有一个间接goto语...

13得票1回答
为什么LLVM IR中的空函数不被作为死代码移除?

从这个简单的C程序开始:void nothing(void) {} int main() { int i; for (i = 0; i < 10; ++i) { nothing(); } return 0; } 我的传递输出如下: 注意:IR语句为绿色。; Fun...

13得票2回答
Clang与VC++:“error: declaration of 'T' shadows template parameter”

我尝试在我的Mac上使用clang 3.3编译以下代码,该代码是关于经典的拷贝和交换惯用语的。 template<typename T> class node{ private: node<T>* left; node<T>* right...

13得票1回答
什么是Compiler-RT?它是从哪里调用的?与何相关?

我想了解关于LLVM的Compiler-RT项目的以下内容:它是由哪个程序调用的?据我所知,Compiler-RT是处理LLVM中没有硬件对应项的指令集合(除此之外还有其他方面吗?)。因此,如果我在LLVM中使用除法,它应该被适当的Compiler-RT函数替换。首先,如果我的理解不正确,请纠...

13得票3回答
使用Clang从Linux交叉编译到Windows

我正在尝试使用Clang将Linux(64位)的C应用程序交叉编译到Windows(64位)。我阅读了有关交叉编译的页面,但它并没有提供太多帮助。 作为一个简单的测试,我在test.c中有以下代码:#include <stdio.h> int main() { ...

13得票1回答
在CMake中指定CUDA编译器

我正在尝试使用基于clang-3.9的文档构建一个cuda项目。但我想使用cmake来构建我的项目,已经将CMAKE_CC_COMPILER和CMAKE_CXX_COMPILER分别设置为clang和clang++。 但问题是,如果我使用file(GLOB_RECURSE CUDA_SOUR...

12得票1回答
在llvm中我的IR代码中添加一个函数调用

你能给我一个例子,说明如何添加一个简单的函数调用,比如:foo(x); 关于我的 IR 代码和 LLVM 中的密码?

12得票2回答
在Windows上,使用link.exe和lld-link.exe,Clang/LLVM 7和8会多次初始化内联静态数据成员。

在Windows环境下,Clang/LLVM 7和8对inline静态数据成员进行了一次TU初始化。就我理解的C++17而言,这是不正确的。 虽然inline变量可以在多个TU中定义,但编译器和/或链接器必须确保它在程序中只存在一次,因此仅被初始化一次。 以下小程序展示了Clang/LLV...

12得票2回答
C++编译器是否会对lambda闭包进行编译时优化?

假设我们有以下(没有意义的)代码:const int a = 0; int c = 0; for(int b = 0; b < 10000000; b++) { if(a) c++; c += 7; } 变量'a'等于零,编译器可以在编译时推断出指令“if(a)c ++;...

12得票1回答
没有Emscripten,如何使用标准库将C++编译为WebAssembly

我在构建独立的WebAssembly时遇到了麻烦,因为我想要对内存和布局有完全的控制。我不想使用emscripten,因为正如下面的帖子所说,它没有给我所有我想要的编译时选项(例如堆栈大小控制,在独立模式下选择导入内存等)。我一直在关注以下页面:如何使用emscripten生成独立的WebAs...