随笔分类 - llvm 12.x
llvm
摘要:opt opt -S -instcombine src.ll -o out.ll 使用instcombine参数优化ll,很像LLVM PASS 优化器 更多的优化可以查看 opt -h clang clang.exe -emit-llvm -S main.c -o main.ll 将c代码编译为L
阅读全文
摘要:void llvtype(std::string_view k, Value* v) { std::cout << std::format("{}:{}:{}", k, (int)v->getType()->getTypeID(), v->getName().str() ) << "\n"; } .
阅读全文
摘要:auto llval = b.getInt32(-1); std::cout << llval->getZExtValue() << "\n"; // 无符号 std::cout << llval->getSExtValue() << "\n"; // 有符号 ConstantFP* llval =
阅读全文
摘要:#include "llvm/ExecutionEngine/Orc/LLJIT.h" #include "llvm/IR/Function.h" #include "llvm/IR/IRBuilder.h" #include "llvm/IR/Module.h" #include "llvm/Su
阅读全文
摘要:想要什么: int fun(int p1) { int r = 0; for(int i = 0; i < p1; i++) { r = r + i + p1; } return r; } IR: define i32 @fun(i32 %p1) { entry: %r = alloca i32,
阅读全文
摘要:想要什么: int fun(int p1) { if(p1 < 5) return 1; else return 2; } IR: define i32 @fun(i32 %p1) { entry: %cmp = icmp slt i32 %p1, 5 br i1 %cmp, label %then
阅读全文
摘要:想要什么: int add1(int p1) { return 1 + p1; } IR: define i32 @add1(i32 %p1) { entry: %retVal = add i32 1, %p1 ret i32 %retVal } #include "llvm/ExecutionEn
阅读全文
摘要:在github上下载最新的Release版本的源码zip包 解压后进入"llvm-project-llvmorg-12.0.0"目录下 运行cmake > cmake -S .\llvm\ -B build -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_B
阅读全文