~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/Bindings/OCaml/passmgr_builder.ml

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
3
 * RUN: %t %t.bc
 
4
 * RUN: %ocamlopt -g -warn-error A -package llvm.passmgr_builder -linkpkg %T/passmgr_builder.ml -o %t
 
5
 * RUN: %t %t.bc
 
6
 * XFAIL: vg_leak
 
7
 *)
 
8
 
 
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
 
11
         little ones. *)
 
12
 
 
13
open Llvm
 
14
open Llvm_passmgr_builder
 
15
 
 
16
let context = global_context ()
 
17
let void_type = Llvm.void_type context
 
18
 
 
19
(* Tiny unit test framework - really just to help find which line is busted *)
 
20
let print_checkpoints = false
 
21
 
 
22
let suite name f =
 
23
  if print_checkpoints then
 
24
    prerr_endline (name ^ ":");
 
25
  f ()
 
26
 
 
27
 
 
28
(*===-- Fixture -----------------------------------------------------------===*)
 
29
 
 
30
let filename = Sys.argv.(1)
 
31
let m = create_module context filename
 
32
 
 
33
 
 
34
(*===-- Pass Manager Builder ----------------------------------------------===*)
 
35
 
 
36
let test_pmbuilder () =
 
37
  let (++) x f = ignore (f x); x in
 
38
 
 
39
  let module_passmgr = PassManager.create () in
 
40
  let func_passmgr   = PassManager.create_function m in
 
41
  let lto_passmgr    = PassManager.create () in
 
42
 
 
43
  ignore (Llvm_passmgr_builder.create ()
 
44
           ++ set_opt_level 3
 
45
           ++ set_size_level 1
 
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);
 
53
  Gc.compact ();
 
54
 
 
55
  PassManager.dispose module_passmgr;
 
56
  PassManager.dispose func_passmgr;
 
57
  PassManager.dispose lto_passmgr
 
58
 
 
59
 
 
60
(*===-- Driver ------------------------------------------------------------===*)
 
61
 
 
62
let _ =
 
63
  suite "pass manager builder" test_pmbuilder;
 
64
  dispose_module m