将模块写入.bc bitcode文件

lur*_*her 7 file-io llvm

我假设从一个模块转储一个.bc文件是一个微不足道的操作,但现在,我第一次必须从代码中实际执行它,对于我的生活,我在这个过程中找不到一个缺失的步骤:

static void WriteModule ( const Module *  M, BitstreamWriter &  Stream )
Run Code Online (Sandbox Code Playgroud)

http://llvm.org/docs/doxygen/html/BitcodeWriter_8cpp.html#a828cec7a8fed9d232556420efef7ae89

要编写该模块,首先我需要一个BistreamWriter

BitstreamWriter::BitstreamWriter (SmallVectorImpl< char > &O)
Run Code Online (Sandbox Code Playgroud)

http://llvm.org/docs/doxygen/html/classllvm_1_1BitstreamWriter.html

对于BitstreamWriter,我需要一个SmallVectorImpl.但是,接下来呢?我应该自己在文件处理程序上逐字节写下SmallVectorImpl的内容吗?这有一个llvm api吗?我需要别的吗?

Eli*_*sky 11

WriteModule函数是静态lib/Bitcode/Writer/BitcodeWriter.cpp,这意味着它不适合外部消费(你甚至无法访问它).

但是WriteBitcodeToFile,使用此接口调用同一文件的另一个函数:

/// WriteBitcodeToFile - Write the specified module to the specified output
/// stream.
void llvm::WriteBitcodeToFile(const Module *M, raw_ostream &Out);
Run Code Online (Sandbox Code Playgroud)

我无法想象一个更方便的界面../include/llvm/Bitcode/ReaderWriter.h顺便说一句,头文件声明它.