草庐IT

llvm-libc

全部标签

c++ - 为什么在 Visual Studio 中使用 LLVM+Clang 时未定义 __clang__?

我为Windows安装了LLVM,其中包括Clang和一些其他工具。它与VisualStudio集成,甚至让我在项目属性中选择“平台工具集”。但是,当我选择LLVM附带的任何工具集时,未定义__clang__,而是定义了_MSC_VER。在VisualStudio中使用LLVM和Clang时如何定义__clang__?我的VisualStudio版本是2015预览版(但是我也在2013年进行了测试,但也没有成功),我的LLVM版本基于SVN版本225473。我试过LLVM-vs2012、LLVM-vs2013和LLVM-vs2014作为平台工具集但没有成功。

c++ - 为 LLVM libc++ 3.3 构建静态库和共享库

来自SVN的最新LLVMlibc++3.3带有一个CMakeLists.txt。我是CMake新手,但昨天我学习了足够的知识,能够在RHEL6.4x86_64主机上构建libc++check-out。此外,我能够在所述CMakeLists.txt中添加足够的CPack相关命令以生成libcxx-3.3.svn-0.el6。x86_64.rpm。但很可能是由于CMake的新手,我无法同时构建静态库和共享库。是的。我评论了IsitpossibletogetCMaketobuildbothastaticandsharedversionofthesamelibrary?.但是,我不想使用add

c++ - 表达式不是积分常量 clang libc++ threading

我试图在我的linux机器(ubuntu)上编译一个非常简单的线程程序,但即使我指定了libc++,clang似乎仍然向我抛出错误。我的程序是:#include#includevoidcall_from_thread(){std::cout生成文件:CC=clang++CFLAGS=-std=c++11-stdlib=libc++-pthread-c-Wall#properdeclarationoflibc++,butstillanerror...LDFALGS=SOURCES=main.cppOBJECTS=$(SOURCES:.cpp=.o)EXECUTABLE=bimapall:

c++ - OS X 10.7 libc++ 是否支持 c++14?

我正在更新一个项目以使用最新的Qt,并借此机会同时切换到libc++和C++11。我的理解是OSX10.7及更高版本支持这一点,而无需我发布自己构建的标准库。我很高兴不再支持OSX版本C++11支持很棒,但我真的很想使用C++14。为OSX>10.7的最终用户安装的libc++是否也支持C++14标准库功能?我的猜测是"is",它通过>10.7中的操作系统更新保持最新-但我一直无法找到明确的来源来说明这一点。 最佳答案 可能不会。Apple于2012年10月发布了MacOSX10.7(10.7.5)的最新更新;从那时起libc++.

c++ - 在 linux 上为 c++ 构建和使用纯 llvm 工具链

假设这是可能的,有人能告诉我,我必须如何配置cmake构建以在ubuntu-16.04上创建一个“纯”llvm工具链,包括clang会libc++libc++abilibunwind(llvm)编译器-rt任何其他可能相关且“准备好生产”的作品生成的编译器应该尽可能快(打开优化,没有不必要的断言或编译器二进制文件本身的其他检查)安装在单独的本地目录中(我们称之为)不依赖包管理器提供的llvm工具链默认使用libc++、libc++abi等。支持清理器(ubsan、地址、内存、线程)(这可能意味着我必须编译libc++asecondtime)到目前为止我已经克隆了llvm来自http:/

c++ - 使用 llvm::Linker 以编程方式查找未解析的外部对象

我正在使用clang/llvm以编程方式编译和链接C源代码。我发现llvm链接器似乎没有将模块中存在未解析的外部对象这一事实报告为错误。我有以下代码(请原谅长度,但这确实是最低要求):intCompileAndLink(){llvm::InitializeNativeTarget();std::stringcode="intUnresolvedFunction();\n""intmain(){returnUnresolvedFunction();}";clang::DiagnosticOptionsdiagnosticOptions;clang::TextDiagnosticPrint

c++ - 编译 clang-llvm 示例

我正在尝试编译Hello目录lib/Transforms/Hello中的示例,它基本上是LLVMpass的HelloWorld,但是当我尝试使用make编译它时出现以下错误。../../../Makefile.common:61:../../../Makefile.config:Nosuchfileordirectory../../../Makefile.common:69:/Makefile.rules:Nosuchfileordirectorymake:***Noruletomaketarget`/Makefile.rules'.Stop.知道问题是什么以及如何解决吗?

c++ - 在 LLVM 中,你如何检查一个 block 是否是一个合并 block

我正在编写一个LLVMPass。我的通行证需要知道哪个block是合并block,即具有多于1个前驱的block。我如何在我的代码中对此进行测试? 最佳答案 您可以像这样遍历所有前辈:#include"llvm/Support/CFG.h"BasicBlock*BB=...;for(pred_iteratorPI=pred_begin(BB),E=pred_end(BB);PI!=E;++PI){BasicBlock*Pred=*PI;//...}你可以使用这个验证一个BB是否有多个前任:BasicBlock*BB=...;if(B

c++ - 如何追踪 LLVM verifyFunction 错误 "Expected no forward declarations!"?

我正在LLVM中为我的一种新语言开发编译器,但在生成调试信息时遇到了问题。我还没有找到很多关于如何使用DIBuilder实际生成调试信息的文档。所以我很可能做错了很多事。我一直在看Kaleidoscope示例,因为它是我发现的唯一一个使用调试信息的示例。我还没有打开Clang来查看他们是如何使用它的,但我很想听听已经使用过的人的意见。我已经能够使用一些更复杂的示例来编译和运行我的语言,但是我从一些基础知识开始重新添加调试支持。这是我要编译的简单脚本:doublemy_main(){return0.0;}这是我从verifyFunction、verifyModule和转储模块的输出。编辑

c++ - llvm 在 C++ 中提取结构元素和结构大小

这里是LLVM新手。我有以下C++程序usingnamespacestd;structA{inti;intj;};intmain(){structAobj;obj.i=10;obj.j=obj.i;return0;}使用clang++,我可以看到LLVMIR包含结构字段,如下所示%struct.A=type{i32,i32}我想使用LLVMPass获取结构元素。我编写了以下程序-遍历全局变量和每个指令操作数,但它们都没有帮助我提取结构A或A.i或A.j。#include"llvm/Pass.h"#include"llvm/IR/Function.h"#include"llvm/Supp