首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从std::istream读取LLVM IR

从std::istream读取LLVM IR
EN

Stack Overflow用户
提问于 2012-10-22 22:12:05
回答 1查看 572关注 0票数 2

以前,我问过如何将IR写到文件中,然后再从文件中读回。读取的代码如下所示:

代码语言:javascript
复制
LLVMContext ctx;
SMDiagnostic diag;
Module *m = ParseIRFile( "my_file", diag, ctx );

然而,我试图将LLVM IR改造成的代码只传递给我一个std::istream&。如何从std::istream读取IR

我想出了如何使用raw_os_ostreamstd::ostream适配成用于编写模块的raw_ostream,但没有明显的方法来适配代码以供阅读,例如,没有适配std::istreamMemoryBuffer (除非我错过了)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-27 16:08:57

您应该使用ParseIR()而不是ParseIRFile()。它获取一个MemoryBuffer作为参数,而不是一个文件名。您可以通过StringRefgetMemBuffer()工厂方法从其创建MemoryBuffer

代码语言:javascript
复制
/// getMemBuffer - Open the specified memory range as a MemoryBuffer.  Note
/// that InputData must be null terminated if RequiresNullTerminator is true.
static MemoryBuffer *getMemBuffer(StringRef InputData,
                                  StringRef BufferName = "",
                                  bool RequiresNullTerminator = true);

由于StringRef可以(甚至是隐式地)从std::string构造,因此您所需要做的就是convert your std::istream to std::string

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13013270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档