gpt4 book ai didi

c++ - 如何将修改后的 llvm 位码保存到给定的文件名?

转载 作者:行者123 更新时间:2023-11-27 23:42:12 34 4
gpt4 key购买 nike

我已经成功地修改了给定的输入位码从文件中读取,如in this SO post所述.现在我想将它保存到一些输出位码文件名,用类似于 saveIRFile(module,"myOutputBC.bc");。这是我正在使用的 main.cpp 文件,但我似乎找不到正确的 API 来执行所需的保存。

/**********************/
/* LLVM INCLUDE FILES */
/**********************/
#include "llvm/IR/Module.h"
#include "llvm/IRReader/IRReader.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/IR/LLVMContext.h"

/**************/
/* NAMESPACES */
/**************/
using namespace std;
using namespace llvm;

int main(int argc, char **argv)
{
LLVMContext ctx;
SMDiagnostic Err;
unique_ptr<Module> M = parseIRFile(argv[1],Err,ctx);

if (M)
{
Module *module = M.get();
for (auto
func = module->begin();
func != module->end();
func++)
{
errs() << func->getName() << "\n";
// modify func's basic blocks ...
// and save with saveIRFile(module,"myOutputBC.bc");
}
}

return 0;
}

非常感谢任何帮助,谢谢!

最佳答案

应该这样做:

std::error_code ec;
ToolOutputFile result("myOutputBC.bc", ec, sys::fs::F_None);
WriteBitcodeToFile(*module, result.os());
result.keep();

请注意,如果您使用的是旧版本的 LLVM,ToolOutputFile 可能称为 tool_output_file

关于c++ - 如何将修改后的 llvm 位码保存到给定的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53775817/

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