草庐IT

llvm-libc

全部标签

c++ - libc++ std::search_n 中的崩溃是一个错误吗?

我已经尽可能地缩小了范围,这似乎是一个错误......#include#includeintmain(intargc,char*argv[]){//Crashesstd::vectorbs{1,0,0};std::search_n(bs.begin(),bs.end(),3,1);//Doesnotcrashstd::vectorbs{1,0};std::search_n(bs.begin(),bs.end(),2,1);return0;}我明白了Segmentationfault:11我希望我没有错误地使用std::search_n:)目前使用LLDB似乎不可能逐步完成STL实现。版

c++ - libc++ is_copy_constructible 对我来说似乎是错误的

is_copy_constructible的libc++实现是这样的:templatestruct_LIBCPP_TYPE_VIS_ONLYis_copy_constructible:publicis_constructible::type>{};is_copy_constructible的C++规范很简单:std::is_copy_constructiblespecification:std::is_constructible::valueistrue.但是,上面的实现不就是实现了T&const而不是constT&吗?将const应用于add_lvalue_reference应该没有

c++ - LLVM 字符串值对象 : How can I retrieve the String from a Value?

当从现有的AST构建IR时,我的AST有一些字符串值(在编译时它们是从std::string构建的)并且我想将它们安全地设置为llvm::Value用作表达式的一部分。在这种情况下,我不需要在运行时绑定(bind)字符串,因为字符串值仅用于在编译时将内容解析为变量、函数或类(该语言不支持native字符串类型)。什么是将我的字符串内容保持为llvm::Value并且仍然能够在编译的后期阶段检索它的最佳方法(当构建嵌套表达式时)?更具体地说,如果我将llvm::Value设置为:llvm::Value*v=llvm::ConstantArray::get(llvmContext,mySt

使用 Apple 的 LLVM 编译器编译 -O 时出现 C++ 代码段错误,但使用 g++ -7.2.0 时则不会

更新:我创建了一个更多的M,但仍然是重现崩溃的CVE。摘要:删除了Base类中对Bool*bools_字段的所有使用(但它仍然必须定义,否则不会发生崩溃)。还从Base及其后代中删除了Base::Initialize()和虚方法Rule。附上新的MCVE。我已经设法为此代码创建了一个MCVE并将其发布在下方。一些描述性细节:代码使用虚基类和派生类,某些实例化的派生类具有调用从“基”类继承的非虚方法的构造函数(实际上是派生类,但在继承层次结构比我所说的“派生”类)来初始化“基”类数据。该方法调用在派生类中重写的虚方法。我意识到这是一件危险的事情,但根据我对C++的(可能有限的)理解,它似

c++ - 使用 libc++ 正则表达式库 (C++11) 匹配 "beginning-of-line"

我想匹配以给定单词开头的所有行,比如iheap。如果我没记错的话,正则表达式(在ECMAScript语法中)"^iheap.*"应该可以解决问题。但是,当我使用libc++的正则表达式库在C++11中对此进行测试时,只有第一行匹配。所以"^..."似乎只匹配输入的开头而不是行的开头。这是一个例子:#include#include#includeusingnamespacestd;intmain(){regexrx("^iheap.*");strings="iheapsayshello.\niheapsayshelloagain.\n";cout输出:iheapsayshello.ihe

c++ - MacPorts gcc48 无法识别的命令行选项 '-stdlib=libc++'

上下文我正在尝试编译包“root_numpy”,它是科学分析软件“root”和python包“numpy”之间的链接。它用作根包装器“rootpy”的一部分。执行以下行时出现g++错误:g++-bundle-undefineddynamic_lookup-g-archx86_64-headerpad_max_install_names-archx86_64build/temp.macosx-10.6-x86_64-2.7/root_numpy/src/_librootnumpy.o-obuild/lib.macosx-10.6-x86_64-2.7/root_numpy/_libroo

c++ - 将编译器从 x86 汇编移植到 LLVM

最近,为了磨练我的汇编技能,我用C++为玩具语言编写了一个非常简单的编译器。它运行单channel,并在解析阶段直接将代码发送到多个字符串流,每个字符串流代表一段代码(即一个代表section.bss,而其他代表.data和.text)。然后,将这些字符串流写入一个文件,我使用NASM和gcc来组装和链接它们。我知道这种单遍方法效率极低,但同样,这更像是一种理解代码生成阶段的练习,而不是其他任何东西。无论如何,我想修改我的代码以直接发出LLVMIL而不是原始汇编,再次作为学习练习。是否有任何关于LLVMIL的入门级指南?或者,更好的是,一个工具来确定一行汇编的等效IL代码?我看了看,只

c++ - 是否可以将 LLVM 位码文件读入 llvm::Module?

我正在使用LLVM编写编译器。每个源文件都被编译成一个LLVM位码文件。最终,链接器将所有位码文件链接并优化为一个最终的二进制文件。我需要一种方法来读取编译器中的位码文件,以便访问类型信息。LLVM文档显示了一个名为BitcodeReader的类,但它似乎是LLVM的内部类。是否有任何可公开访问的方式将位码文件读入llvm::Module? 最佳答案 我查看了llvm-dis工具的源代码,找到了我要找的功能:Module*ParseBitcodeFile(MemoryBuffer*Buffer,LLVMContext&Context

windows - 如何从 LLVM ir 创建可执行文件?

我目前正在使用llc使用命令行将.ll文件转换为.s。然后我想拿这个文件然后使用nasm从中创建可执行文件。虽然第一步似乎工作正常,但我无法让第二步工作。原始文件名为code.ll,包含以下代码:definei32@main(){reti320}现在我使用cmd通过键入以下内容来构建.s文件:llccode.ll这工作正常并创建一个包含以下代码的code.s文件:.def@feat.00;.scl3;.type0;.endef.globl@feat.00@feat.00=1.def_main;.scl2;.type32;.endef.text.globl_main.align16,0x

windows - 为什么 Windows 上的 llvm-config 不为 clang++.exe 发出正确的参数?

我不是经验丰富的LLVM用户,但我正在尝试在Windows上编译LinuxLLVM项目。该项目是GHDL。因为适用于Windows的即用型LLVM安装程序没有捆绑llvm-config,所以我需要从源代码编译LLVM和clange。该项目需要LLVM3.5。首先,我下载了llvm-3.5.2和clang-3.5.2并使用CMake将其转换为VisualStudio2013项目。然后我用VS2013编译了一下。原始makefile调用llvm-config。生成的字符串传递给clang++:clang++-c-I`/usr/lib/llvm-3.5/bin/llvm-config--in