草庐IT

llvm-codegen

全部标签

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

c++ - 苹果 LLVM 5.0 pragma 优化

AppleLLVM5.0编译器中GCC的#pragmaGCCoptimize("O0")或VS的#pragmaoptimize("",off)的等效项是什么?我需要它来禁用一段代码的优化。 最佳答案 从简短的搜索来看,目前clang/llvm似乎不支持这样的pragma。如果您不想关闭整个文件的优化,我建议将您不想优化的内容分解到一个单独的文件中,并单独设置-O0。 关于c++-苹果LLVM5.0pragma优化,我们在StackOverflow上找到一个类似的问题:

c++ - 在 LLVM 中创建文字指针值

我有一些LLVM代码,我想引用现有变量。我将使用JIT并在我的进程中执行此代码,因此我希望该函数直接引用我现在拥有的变量。例如,int64_tbegin,end;auto&&con=g.module->getContext();std::vectortypes={llvm::Type::getInt64PtrTy(con),llvm::Type::getInt64PtrTy(con)};autotramp=llvm::Function::Create(llvm::FunctionType::get(llvm::Type::getVoidTy(con),types,false),llvm

c++ - 如何逐行解析LLVM IR

我特别需要在我的C++代码运行期间逐行解析LLVMIR代码,我需要知道每行的哪些操作数发生了什么操作。例如,如果IR代码是:%0=loadi32*%a,align4我想知道在我的C++代码运行期间,来自%a的值正在加载到%0。我考虑过使用简单的文本解析C++程序来执行此操作(解析IR并搜索IR关键字),但想知道是否有任何现有库(可能来自LLVM本身)可以帮助我避免这样做。 最佳答案 假设理论上,我们可以直接利用LLVM::LLLexer为逐行解析的LLVMIR编写我们自己的解析器。以下答案假设您只对LLVMIR文件的每个函数内部的操

c++ - 当我尝试发出目标代码时,为什么 LLVM 会出现段错误?

我正在尝试按照有关编译器实现的LLVM教程进行操作,但是当我尝试发出目标代码时我的代码出现了段错误。这是一个尝试编译函数func的最小示例。为简单起见,func是一个什么都不做的函数。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeintmain(){llvm::LLVM

c++ - std::variant<>::get() 不能用 Apple LLVM 10.0 编译

我正在使用C++17std::variant类型并尝试编译cppreferenceexamplecode对于get():#include#includeintmain(){std::variantv{12},w;inti=std::get(v);w=std::get(v);w=std::get(v);//sameeffectasthepreviousline//std::get(v);//error:nodoublein[int,float]//std::get(v);//error:validindexvaluesare0and1try{std::get(w);//wcontains

ios - Xcode 5 llvm-g++ 和 llvm-gcc 路径?

我正在使用GoogleTesseractOCR使用Xcode5为iOS7构建一个应用程序:http://lois.di-qual.net/blog/install-and-use-tesseract-on-ios-with-tesseract-ios/它在英语识别方面运行良好,但我无法将任何其他语言添加到项目中。然后我发现其他一些项目通过编译Tesseract库成功地做到了:http://inspirationteam.weebly.com/home/compile-use-tesseract-ocr-lib-301-on-ioshttp://tinsuke.wordpress.com