[llvm-commits] CVS: llvm/include/llvm/Bitcode/ReaderWriter.h

Chris Lattner sabre at nondot.org
Sun Apr 29 00:54:54 PDT 2007



Changes in directory llvm/include/llvm/Bitcode:

ReaderWriter.h updated: 1.1 -> 1.2
---
Log message:

Switch the bitcode reader interface to take a MemoryBuffer instead of knowing
anything about disk I/O itself.  This greatly simplifies its interface -
eliminating the need for the ReaderWrappers.cpp file.

This adds a new option to llvm-dis (-bitcode) which instructs it to read
the input file as bitcode.  Until/unless the bytecode reader is taught to
read from MemoryBuffer, there is no way to handle stdin reading without it.

I don't plan to switch the bytecode reader over, I'd rather delete it :),
so the option will stay around temporarily.



---
Diffs of the changes:  (+10 -5)

 ReaderWriter.h |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)


Index: llvm/include/llvm/Bitcode/ReaderWriter.h
diff -u llvm/include/llvm/Bitcode/ReaderWriter.h:1.1 llvm/include/llvm/Bitcode/ReaderWriter.h:1.2
--- llvm/include/llvm/Bitcode/ReaderWriter.h:1.1	Sun Apr 22 01:22:05 2007
+++ llvm/include/llvm/Bitcode/ReaderWriter.h	Sun Apr 29 02:54:31 2007
@@ -20,15 +20,20 @@
 namespace llvm {
   class Module;
   class ModuleProvider;
+  class MemoryBuffer;
   
-  ModuleProvider *getBitcodeModuleProvider(const std::string &Filename,
+  /// getBitcodeModuleProvider - Read the header of the specified bitcode buffer
+  /// and prepare for lazy deserialization of function bodies.  If successful,
+  /// this takes ownership of 'buffer' and returns a non-null pointer.  On
+  /// error, this returns null, *does not* take ownership of Buffer, and fills
+  /// in *ErrMsg with an error description if ErrMsg is non-null.
+  ModuleProvider *getBitcodeModuleProvider(MemoryBuffer *Buffer,
                                            std::string *ErrMsg = 0);
 
-  
   /// ParseBitcodeFile - Read the specified bitcode file, returning the module.
-  /// If an error occurs, return null and fill in *ErrMsg if non-null.
-  Module *ParseBitcodeFile(const std::string &Filename,
-                           std::string *ErrMsg = 0);
+  /// If an error occurs, this returns null and fills in *ErrMsg if it is
+  /// non-null.  This method *never* takes ownership of Buffer.
+  Module *ParseBitcodeFile(MemoryBuffer *Buffer, std::string *ErrMsg = 0);
   
   /// WriteBitcodeToFile - Write the specified module to the specified output
   /// stream.






More information about the llvm-commits mailing list