*===----------------------------------------------------------------------===*)
-type bitreader_result =
-| Bitreader_success of Llvm.llmodule
-| Bitreader_failure of string
+exception Error of string
+(** [read_bitcode_file path] reads the bitcode for a new module [m] from the
+ file at [path]. Returns [Success m] if successful, and [Failure msg]
+ otherwise, where [msg] is a description of the error encountered.
+ See the function [llvm::getBitcodeModuleProvider]. **)
+external get_module_provider : Llvm.llmemorybuffer -> Llvm.llmoduleprovider
+ = "llvm_get_module_provider"
-(** [read_bitcode_file path] reads the bitcode for module [m] from the file at
- [path]. Returns [Reader_success m] if successful, and [Reader_failure msg]
- otherwise, where [msg] is a description of the error encountered. **)
-external read_bitcode_file : string -> bitreader_result
- = "llvm_read_bitcode_file"
+(** [parse_bitcode mb] parses the bitcode for a new module [m] from the memory
+ buffer [mb]. Returns [Success m] if successful, and [Failure msg] otherwise,
+ where [msg] is a description of the error encountered.
+ See the function [llvm::ParseBitcodeFile]. **)
+external parse_bitcode : Llvm.llmemorybuffer -> Llvm.llmodule
+ = "llvm_parse_bitcode"