草庐IT

llvm-libc

全部标签

c++ - LLVM 编译器优化错误还是什么?

我偶然发现了一个我无法理解的有趣问题。背景是:XCode上的LLVM4.2编译器编译时支持c++11用-Os编译为armv7/armv7s架构编译现在我意识到在启用优化的情况下编译时出现的一些代码存在问题。代码是,逐字:staticintfoo(inttx,intsx,intw){intvs=60;if(sxw-vs*2)return(sx+w-tx);elseif(sx>w-vs*2&&tx现在,通过使用LLDB,我逐步跟踪了一个奇怪的错误,这让我意识到if的第一个分支是带输入的sx=648tx=649w=768vs=60(这些值直接取自XCode中的locals表,我无法查询lld

c++ - libc++ 中可能存在错误?

以下代码不使用clang3.1编译,使用libc++(不知道版本,当前是Xcode自带的)。它适用于其他标准库。我的代码是否有错误,或者这是libc++中的错误?#include#includeusingnamespacestd;structA{A(constmap&m){}};structB{mapm;};我看到的错误在中:/usr/lib/c++/v1/utility:241:64:Nomembernamed'value'in'std::__1::is_nothrow_copy_constructible'我试图进一步隔离它,但这是我找到的最小示例。有趣的是,当我替换string通

c++ - 如何将 llvm::outs() 重定向到文件?

我正在使用一些LLVM工具(如llvm-nm)作为静态库。IE。我复制了源代码llvm-nm.cpp,将main(..)重命名为llvm_nm(..)并将其编译为静态库。我想将标准输出转发到我的文件。我尝试使用下一种方法:intout_fd,err_fd;fpos_tout_pos,err_pos;//redirectoutfflush(stdout);fgetpos(stdout,&out_pos);out_fd=dup(fileno(stdout));freopen(outFilename,"w",stdout);//executeintret=llvm_nm(argc_,argv

c++ - C++11 是否要求分配器是默认可构造的,libstdc++ 和 libc++ 不同意?

使用稍作修改的HowardHinnants'sC++11stackallocator版本这是documentedhere和here,使用std::basic_string并使用使用libstdc++的gcc进行编译,以下示例(seeitlive):constunsignedintN=200;arenaa;short_allocac(a);std::basic_string,short_alloc>empty(ac);给出以下错误(以及其他):error:nomatchingfunctionforcallto'short_alloc::short_alloc()'if(__n==0&&_

c++ - 在 mac os x 的命令行中将 clang 与 libc++ 和 c++11 结合使用

如果我启用c++11和libc++,我什至无法使用clang编译一个简单的helloworld。比如下面的代码#includeintmain(){std::cout当我运行clang++-std=c++11-stdlib=libc++main.cpp时编译产生以下输出Infileincludedfrommain.cpp:1:Infileincludedfrom/usr/bin/../lib/c++/v1/iostream:38:Infileincludedfrom/usr/bin/../lib/c++/v1/ios:216:Infileincludedfrom/usr/bin/../l

c++ - LLVM 自动 C++ 链接

在一些LLVM教程中,我看到可以相当容易地将C函数绑定(bind)到基于LLVM的自定义语言中。LLVM为程序员提供了一个指向函数的指针,然后可以将其与LLVM生成的代码混合。使用C++库执行此操作的最佳方法是什么。假设我有一个相当复杂的库,如Qt或Boost,我想将其绑定(bind)到我的自定义语言。我是否需要创建stub库(如Python或Lua需要),或者LLVM是否提供某种外部函数接口(interface)(FFI)? 最佳答案 在我的LLVM代码中,我为此创建了extern"C"包装函数,并将LLVM函数声明插入到模块中以

c++ - llvm-ld 仍然存在于 clang 3.4 吗?

我上次检查clang时它的版本是3.1/3.2,现在我在Ubuntu13.0464位下,我从官方apt存储库安装了clang和llvm(加上工具),但没有任何痕迹llvm-ld-3.4、llvm-ld-3.0和llvm-ld-3.1是我的网站上可用的此工具的仅有的2个版native器,我的问题是:我应该用什么来替换llvm-ld并生成库或机器可执行文件? 最佳答案 llvm-ld不再存在。来自LLVM3.2releasenotes:llvm-ldandllvm-stubhavebeenremoved,llvm-ldfunctiona

c++ - libc++ - 停止将 std 重命名为 std::__1?

经过大量努力让clang和libc++编译、运行、与NetBeans集成,甚至交叉编译到32位机器,我想我已经搞清楚了!因此,我开始使用libstdc++没有的一些功能(这就是颠覆我的开发环境的全部原因),然后发现……我实际上做不到。libc++已安装,它可以工作,编译的程序(当它工作时)确实需要它。但是,编译器仍然试图通过混淆命名空间来尝试使用libstdc++版本;std::__1::map、std::__1::basic_string等。现在,我从thisquestion知道为什么会这样,为什么libc++会这样。我只需要知道如何抹杀它,因为它完全不适用——我真的非常想使用lib

c++ - "Live"代码和使用 C++ 和 LLVM JIT 的快速原型(prototype)制作?

您可能已经看过BretVictor's"live"JSIDE,或一些alternativeimplementations它激发了灵感,扩展到其他语言,但仍然保留基于VM的语言。但是昨天,我偶然发现了thesameconcept,appliedingoodoldC++,感谢LLVM。仍然是一个非常早期和不成熟的实现,但具有很大的潜力。我真的很好奇这个实现,但是作者已经并且可能不会公开发布它。所以我的问题是,如果有人知道如何实现类似功能的资源,我的意思是几乎瞬时编译和两个连接,提供代码的实时反馈,允许视觉部分更改甚至生成和预览附加代码? 最佳答案

c++ - 在 Qt Creator 中使用 libc++ 而不是 libstdc++

我在上安装了clang++3.5、g++4.9.1、libc++和QtCreatorUbuntu14.04.1。我通常使用clang++作为编译器。但最近我发现g++的libstdc++用作C++标准库。据我所知,后者目前并不完全支持C++14创新。clang++编译项目时,如何将libstd++替换为libc++?我已经完成的(.pro-文件):QMAKE_CXXFLAGS_CXX11=-std=gnu++1yCONFIG*=c++11QMAKE_CXXFLAGS+=-stdlib=libc++LIBS+=-stdlib=libc++但是QtCreator编辑器在抓取包含的文件时仍然