gpt4 book ai didi

llvm - 如何将生成的 llvm::Module 的 LLVM-IR 代码存储到字符串中?

转载 作者:行者123 更新时间:2023-12-04 17:46:09 33 4
gpt4 key购买 nike

Fibonacci LLVM 示例使用 errs() << *theModule 打印出 LLVM IR .

是否有任何函数能够将生成的 LLVM IR 存储到字符串(的向量)或任何其他变量中,而不是将其打印出来? (例如, std::string llvm_IR = theModule->getIR() )

我一直在搜索 llvm::Module Class Reference并没有得到任何帮助。
Fibonacci.cpp 的一部分:

//CreateFibFunction之前定义为生成 fibonacci功能。

LLVMContext Context;

// Create some module to put our function into it.
std::unique_ptr<Module> Owner(new Module("test", Context));
Module *theModule = Owner.get();

// We are about to create the "fib" function:
Function *FibF = CreateFibFunction(M, Context);
errs() << "OK\n";
errs() << "We just constructed this LLVM module:\n\n---------\n";
errs() << *theModule;
errs() << "---------\nstarting fibonacci(" << n << ") with JIT...\n";

最佳答案

你可以用同样的方式来做——而不是使用 errs() ,这是一个 raw_ostream ,您可以使用 raw_string_ostream , 像这样:

std::string Str;
raw_string_ostream OS(Str);
OS << *theModule;
OS.flush()
// Str now contains the module text

关于llvm - 如何将生成的 llvm::Module 的 LLVM-IR 代码存储到字符串中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33960249/

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