草庐IT

c++ - 如何从 LLVM 中的终止符指令中删除后继指令

对于基本block,我想将条件跳转更改为无条件跳转。因此,如果一个基本block有两个后继者,我想删除其中一个后继者的边。我希望基本block直接跳转到其中一个后继者。我该怎么做?为了说明我的观点,我想改变A/\/\BC到A\\C 最佳答案 我认为最简单的方法就是创建一个新的无条件分支指令,然后用它替换旧的。所以,像这样:#include"llvm/Transforms/Utils/BasicBlockUtils.h"BranchInst*Old=...BranchInst*New=BranchInst::Create(Old->g

c++ - 我可以使用 LLVM 来加速构建并减少 GCC 编译时间吗?

我正在尝试减少HHVM的编译时间,这可能需要两个小时。我在某处读到LLVM可以充当gcc的预处理器并大大减少内存使用和编译时间?不幸的是,我似乎无法直接使用clang编译HHVM,因为我遇到了奇怪的fatalerror,例如'array'filenotfound即使我尝试将CXXFLAGS设置为-std=c++11或-std=gnu++11模式,但没有成功。我已经阅读了有关dragonegg的内容,但不确定如何使用它或者它是否是我正在寻找的东西? 最佳答案 无论如何,我认为直接使用clang会容易得多。因此,请尝试找出为什么clan

c++ - 什么是正确的 LLVM header guard 样式?

在clangtidy中,检查[llvm-header-guard]寻找LLVM样式的头文件防护,但我找不到任何正确的LLVM头文件防护样式的示例,特别是给定义的名称结构,codingstandards页面没有提及任何内容。 最佳答案 查看单元测试:https://github.com/llvm-mirror/clang-tools-extra/blob/master/unittests/clang-tidy/LLVMModuleTest.cpp它似乎接受了一些常用模式的变体。对于名为include/llvm/ADT/foo.h的文件

c++ - llvm JIT 将库添加到模块

我正在开发一个使用LLVM的JIT。该语言有一个用C++编写的小型运行时,我使用clang将其编译为LLVMIRclang++runtime.cu--cuda-gpu-arch=sm_50-c-emit-llvm然后加载*.bc文件,生成额外的IR,并即时执行。CUDA东西的原因是我想在运行时添加一些GPU加速。但是,这引入了CUDA特定的外部函数,这些函数会产生如下错误:LLVMERROR:Programusedexternalfunction'cudaSetupArgument'whichcouldnotberesolved!讨论here,这通常通过在编译程序时包含适当的库来解决:

c++ - 为什么我必须为 LLVM 链接这些库两次?

我正在尝试编译示例LLVM程序。链接器步骤使用此命令。llvm-config-3.2--ldflags--libs这会产生以下命令。g++-obin/Debug/test-llvmobj/Debug/main.o-L/usr/lib/llvm-3.2/lib-lpthread-lffi-ldl-lm(aboatloadofLLVMlibrarieshere)但是,它无法链接。我收到这样的错误。undefinedreferencetoffi_type_float因此,我在末尾添加了-lffi和-ldl。g++-obin/Debug/test-llvmobj/Debug/main.o-L/

c++ - llvm clang 2.6 : "not using the clang compiler for C++ inputs "

LLVM2.6+clang。尝试编译C++文件并得到:clang:warning:notusingtheclangcompilerforC++inputs如何在C++模式下启动clang? 最佳答案 我会得到中继代码。自2.6以来,C++支持有了很大改进。tools/clang/tools/driver中的clang驱动程序Makefile使用CLANG_IS_PRODUCTION定义来控制C++是打开还是关闭。CLANG_IS_PRODUCTION表示C++关闭。主干构建的默认值不是CLANG_IS_PRODUCTION(即开发构

c++ - 我怎样才能做 llvm 链接时间优化

我编译了一个C++程序,使用以下示例。clang++-O4-emit-llvmfile1.cpp-c-ofile1.bcclang++-O4-emit-llvmfile2.cpp-c-ofile2.bcllvm-linkfile1.bcfile2.bc我如何在这里执行链接时间优化? 最佳答案 使用opt:clang++-O4-emit-llvmfile1.cpp-c-ofile1.bcclang++-O4-emit-llvmfile2.cpp-c-ofile2.bcllvm-linkfile1.bcfile2.bc-oall.bco

c++ - 使用 G++ 而不是 LLVM 编译时代码速度明显变慢

我正在试验我使用XCode7.0在C++中编写的算法。当我将XCode中标准LLVM编译器的性能与使用G++(5.2.0)编译时创建的二进制文件进行比较时,使用LLVM创建的二进制文件比使用g++编译器创建的代码快一个数量级(>10x)。我正在为g++编译器使用-o3代码优化标志,如下所示:/usr/local/Cellar/gcc/5.2.0/bin/g++-5-o3-fopenmp-DNDEBUGmain.cpp\PattersonInstance.cpp\...\-oRROTprog需要g++编译,因为算法必须在我无法使用LLVM编译器的高性能计算机上编译和运行。另外,我想使用O

c++ - llvm 5.0 与 llvm::Module::dump() 的链接错误

在过去的两天里,我一直在尝试将LLVM与我的C++项目链接起来,它终于可以正常工作了,但问题是当我使用dump()方法时,它给出了一个链接器错误,我认为问题出在使用我要链接的库,所以我将我的可执行文件链接到所有LLVM库(模块)但没有成功。那是LLVM5.0代码库中的错误还是我做错了什么以及我特别谈论LLVM5.0的原因是因为我在评论部分的其他地方(LLVM-5.0Makefileundefinedreferencefail)看到没有使用LLVM4.0编译相同代码的问题,当然我已经搜索了其他解决方案,但没有任何内容llvm_test.cpp:#include"llvm/IR/LLVMC

c++ - 无法为 Eclipse CDT 安装 LLVM 工具链

我试图让Clang在Eclipse上再次工作,因此我尝试在EclipseMarketplace上安装LLVM工具链。但是当我点击确认继续安装时,我得到以下错误Unabletoreadrepositoryathttp://petrituononen.com/llvm4eclipsecdt/update.http://petrituononen.com/llvm4eclipsecdt/updateisnotavalidrepositorylocation.此站点似乎已关闭,但我找不到任何替代资源。有没有办法让Clang在EclipseMars上工作? 最佳答案