[OCaml] [autoconf] Migrate to ocamlfind.
[oota-llvm.git] / test / Bindings / Ocaml / bitreader.ml
index 05bbd28e06f610216680daae05f041f545282bb3..28c04a6abc00c208fb34b2ceadf898a53a64cb26 100644 (file)
@@ -1,35 +1,37 @@
-(* RUN: %ocamlc llvm.cma llvm_bitreader.cma llvm_bitwriter.cma %s -o %t
- * RUN: ./%t %t.bc
- * RUN: llvm-dis < %t.bc | grep caml_int_ty
+(* RUN: cp %s %T/bitreader.ml
+ * RUN: %ocamlcomp -warn-error A -package llvm.bitreader -package llvm.bitwriter -linkpkg %T/bitreader.ml -o %t
+ * RUN: %t %t.bc
+ * RUN: llvm-dis < %t.bc
+ * XFAIL: vg_leak
  *)
 
 (* Note that this takes a moment to link, so it's best to keep the number of
    individual tests low. *)
 
+let context = Llvm.global_context ()
+
 let test x = if not x then exit 1 else ()
 
 let _ =
   let fn = Sys.argv.(1) in
-  let m = Llvm.create_module "ocaml_test_module" in
-  
-  ignore (Llvm.define_type_name "caml_int_ty" Llvm.i32_type m);
-  
+  let m = Llvm.create_module context "ocaml_test_module" in
+
   test (Llvm_bitwriter.write_bitcode_file m fn);
-  
+
   Llvm.dispose_module m;
-  
+
   (* parse_bitcode *)
   begin
     let mb = Llvm.MemoryBuffer.of_file fn in
     begin try
-      let m = Llvm_bitreader.parse_bitcode mb in
+      let m = Llvm_bitreader.parse_bitcode context mb in
       Llvm.dispose_module m
     with x ->
-      Llvm.MemoryBuffer.dispose;
+      Llvm.MemoryBuffer.dispose mb;
       raise x
     end
   end;
-  
+
   (* MemoryBuffer.of_file *)
   test begin try
     let mb = Llvm.MemoryBuffer.of_file (fn ^ ".bogus") in
@@ -38,37 +40,37 @@ let _ =
   with Llvm.IoError _ ->
     true
   end;
-  
-  (* get_module_provider *)
+
+  (* get_module *)
   begin
     let mb = Llvm.MemoryBuffer.of_file fn in
-    let mp = begin try
-      Llvm_bitreader.get_module_provider mb
+    let m = begin try
+      Llvm_bitreader.get_module context mb
     with x ->
       Llvm.MemoryBuffer.dispose mb;
       raise x
     end in
-    Llvm.ModuleProvider.dispose mp
+    Llvm.dispose_module m
   end;
-  
+
   (* corrupt the bitcode *)
   let fn = fn ^ ".txt" in
   begin let oc = open_out fn in
     output_string oc "not a bitcode file\n";
     close_out oc
   end;
-  
-  (* test get_module_provider exceptions *)
+
+  (* test get_module exceptions *)
   test begin
     try
       let mb = Llvm.MemoryBuffer.of_file fn in
-      let mp = begin try
-        Llvm_bitreader.get_module_provider mb
+      let m = begin try
+        Llvm_bitreader.get_module context mb
       with x ->
         Llvm.MemoryBuffer.dispose mb;
         raise x
       end in
-      Llvm.ModuleProvider.dispose mp;
+      Llvm.dispose_module m;
       false
     with Llvm_bitreader.Error _ ->
       true