LTO: introduce object file-based on-disk module format.
[oota-llvm.git] / include / llvm / Object / IRObjectFile.h
index 2b6fa2c779fbbc1b79ea05be0906d1f23c7748b4..b650d5d32934994731bdc7ad40273114a5a78bc5 100644 (file)
@@ -22,6 +22,8 @@ class Module;
 class GlobalValue;
 
 namespace object {
+class ObjectFile;
+
 class IRObjectFile : public SymbolicFile {
   std::unique_ptr<Module> M;
   std::unique_ptr<Mangler> Mang;
@@ -49,6 +51,16 @@ public:
     return v->isIR();
   }
 
+  /// \brief Finds and returns bitcode embedded in the given object file, or an
+  /// error code if not found.
+  static ErrorOr<MemoryBufferRef> findBitcodeInObject(const ObjectFile &Obj);
+
+  /// \brief Finds and returns bitcode in the given memory buffer (which may
+  /// be either a bitcode file or a native object file with embedded bitcode),
+  /// or an error code if not found.
+  static ErrorOr<MemoryBufferRef>
+  findBitcodeInMemBuffer(MemoryBufferRef Object);
+
   static ErrorOr<std::unique_ptr<IRObjectFile>>
   createIRObjectFile(MemoryBufferRef Object, LLVMContext &Context);
 };