1
(* RUN: cp %s %T/passmgr_builder.ml
2
* RUN: %ocamlc -g -warn-error A -package llvm.passmgr_builder -linkpkg %T/passmgr_builder.ml -o %t
4
* RUN: %ocamlopt -g -warn-error A -package llvm.passmgr_builder -linkpkg %T/passmgr_builder.ml -o %t
9
(* Note: It takes several seconds for ocamlopt to link an executable with
10
libLLVMCore.a, so it's better to write a big test than a bunch of
14
open Llvm_passmgr_builder
16
let context = global_context ()
17
let void_type = Llvm.void_type context
19
(* Tiny unit test framework - really just to help find which line is busted *)
20
let print_checkpoints = false
23
if print_checkpoints then
24
prerr_endline (name ^ ":");
28
(*===-- Fixture -----------------------------------------------------------===*)
30
let filename = Sys.argv.(1)
31
let m = create_module context filename
34
(*===-- Pass Manager Builder ----------------------------------------------===*)
36
let test_pmbuilder () =
37
let (++) x f = ignore (f x); x in
39
let module_passmgr = PassManager.create () in
40
let func_passmgr = PassManager.create_function m in
41
let lto_passmgr = PassManager.create () in
43
ignore (Llvm_passmgr_builder.create ()
46
++ set_disable_unit_at_a_time false
47
++ set_disable_unroll_loops false
48
++ use_inliner_with_threshold 10
49
++ populate_function_pass_manager func_passmgr
50
++ populate_module_pass_manager module_passmgr
51
++ populate_lto_pass_manager lto_passmgr
52
~internalize:false ~run_inliner:false);
55
PassManager.dispose module_passmgr;
56
PassManager.dispose func_passmgr;
57
PassManager.dispose lto_passmgr
60
(*===-- Driver ------------------------------------------------------------===*)
63
suite "pass manager builder" test_pmbuilder;