1 (* RUN: rm -rf %t.builddir
2 * RUN: mkdir -p %t.builddir
3 * RUN: cp %s %t.builddir
4 * RUN: %ocamlopt -warn-error A llvm.cmxa llvm_bitreader.cmxa llvm_bitwriter.cmxa %t.builddir/bitreader.ml -o %t
6 * RUN: llvm-dis < %t.bc
10 (* Note that this takes a moment to link, so it's best to keep the number of
11 individual tests low. *)
13 let context = Llvm.global_context ()
15 let test x = if not x then exit 1 else ()
18 let fn = Sys.argv.(1) in
19 let m = Llvm.create_module context "ocaml_test_module" in
21 test (Llvm_bitwriter.write_bitcode_file m fn);
23 Llvm.dispose_module m;
27 let mb = Llvm.MemoryBuffer.of_file fn in
29 let m = Llvm_bitreader.parse_bitcode context mb in
32 Llvm.MemoryBuffer.dispose mb;
37 (* MemoryBuffer.of_file *)
39 let mb = Llvm.MemoryBuffer.of_file (fn ^ ".bogus") in
40 Llvm.MemoryBuffer.dispose mb;
42 with Llvm.IoError _ ->
48 let mb = Llvm.MemoryBuffer.of_file fn in
50 Llvm_bitreader.get_module context mb
52 Llvm.MemoryBuffer.dispose mb;
58 (* corrupt the bitcode *)
59 let fn = fn ^ ".txt" in
60 begin let oc = open_out fn in
61 output_string oc "not a bitcode file\n";
65 (* test get_module exceptions *)
68 let mb = Llvm.MemoryBuffer.of_file fn in
70 Llvm_bitreader.get_module context mb
72 Llvm.MemoryBuffer.dispose mb;
75 Llvm.dispose_module m;
77 with Llvm_bitreader.Error _ ->