gpt4 book ai didi

c++ - LLVM:如何将 IR 写入文件并运行它?

转载 作者:太空狗 更新时间:2023-10-29 20:53:45 26 4
gpt4 key购买 nike

我想使用 parseIRFile 调用解析使用 clang++ -S -emit-llvm test.cpp -o test.ir 创建的 IR 文件,操作这个 IR a位,然后将 IR 写回文件。

我试过使用 WriteBitcodeToFile 调用,但这没有按预期工作。

如何将 Module 写回 IR,然后编译并运行修改后的 IR?

#include <llvm/IR/Module.h>
#include <llvm/IRReader/IRReader.h>
#include <llvm/IR/LLVMContext.h>
#include <llvm/Support/SourceMgr.h>
#include <llvm/Bitcode/ReaderWriter.h>
#include <llvm/Support/FileSystem.h>

using namespace llvm;
int main()
{
LLVMContext context;
SMDiagnostic error;
std::unique_ptr<Module> m = parseIRFile("test.ir", error, context);

std::error_code EC;
llvm::raw_fd_ostream OS("module", EC, llvm::sys::fs::F_None);
WriteBitcodeToFile(m.get(), OS);
OS.flush();

return 0;
}

最佳答案

一个简单的方法是将您的模块转储到标准输出,使用:

m->dump();

然后您可以将 C++ 程序的输出重定向到文本文件并使用 llc 编译它:

llc  < sample_module.ll > sample_module.s

还可以使用打印功能:

void print (raw_ostream &OS, AssemblyAnnotationWriter *AAW, bool ShouldPreserveUseListOrder=false, bool IsForDebug=false) const

关于c++ - LLVM:如何将 IR 写入文件并运行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41716079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com