我假设从一个模块转储一个.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顺便说一句,头文件声明它.