]>
Commit | Line | Data |
---|---|---|
223e47cc LB |
1 | (* RUN: %ocamlopt -warn-error A unix.cmxa llvm.cmxa llvm_bitwriter.cmxa %s -o %t |
2 | * RUN: %t %t.bc | |
3 | * RUN: llvm-dis < %t.bc | |
4 | * XFAIL: vg_leak | |
5 | *) | |
6 | ||
7 | (* Note that this takes a moment to link, so it's best to keep the number of | |
8 | individual tests low. *) | |
9 | ||
10 | let context = Llvm.global_context () | |
11 | ||
12 | let test x = if not x then exit 1 else () | |
13 | ||
14 | let read_file name = | |
15 | let ic = open_in_bin name in | |
16 | let len = in_channel_length ic in | |
17 | let buf = String.create len in | |
18 | ||
19 | test ((input ic buf 0 len) = len); | |
20 | ||
21 | close_in ic; | |
22 | ||
23 | buf | |
24 | ||
25 | let temp_bitcode ?unbuffered m = | |
26 | let temp_name, temp_oc = Filename.open_temp_file ~mode:[Open_binary] "" "" in | |
27 | ||
28 | test (Llvm_bitwriter.output_bitcode ?unbuffered temp_oc m); | |
29 | flush temp_oc; | |
30 | ||
31 | let temp_buf = read_file temp_name in | |
32 | ||
33 | close_out temp_oc; | |
34 | ||
35 | temp_buf | |
36 | ||
37 | let _ = | |
38 | let m = Llvm.create_module context "ocaml_test_module" in | |
39 | ||
40 | test (Llvm_bitwriter.write_bitcode_file m Sys.argv.(1)); | |
41 | let file_buf = read_file Sys.argv.(1) in | |
42 | ||
43 | test (file_buf = temp_bitcode m); | |
44 | test (file_buf = temp_bitcode ~unbuffered:false m); | |
45 | test (file_buf = temp_bitcode ~unbuffered:true m) |