1*9880d681SAndroid Build Coastguard Worker(*===-- llvm_analysis.mli - LLVM OCaml Interface --------------*- OCaml -*-===* 2*9880d681SAndroid Build Coastguard Worker * 3*9880d681SAndroid Build Coastguard Worker * The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker * 5*9880d681SAndroid Build Coastguard Worker * This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker * License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker * 8*9880d681SAndroid Build Coastguard Worker *===----------------------------------------------------------------------===*) 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker(** Intermediate representation analysis. 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker This interface provides an OCaml API for LLVM IR analyses, the classes in 13*9880d681SAndroid Build Coastguard Worker the Analysis library. *) 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker(** [verify_module m] returns [None] if the module [m] is valid, and 16*9880d681SAndroid Build Coastguard Worker [Some reason] if it is invalid. [reason] is a string containing a 17*9880d681SAndroid Build Coastguard Worker human-readable validation report. See [llvm::verifyModule]. *) 18*9880d681SAndroid Build Coastguard Workerexternal verify_module : Llvm.llmodule -> string option = "llvm_verify_module" 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker(** [verify_function f] returns [None] if the function [f] is valid, and 21*9880d681SAndroid Build Coastguard Worker [Some reason] if it is invalid. [reason] is a string containing a 22*9880d681SAndroid Build Coastguard Worker human-readable validation report. See [llvm::verifyFunction]. *) 23*9880d681SAndroid Build Coastguard Workerexternal verify_function : Llvm.llvalue -> bool = "llvm_verify_function" 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker(** [verify_module m] returns if the module [m] is valid, but prints a 26*9880d681SAndroid Build Coastguard Worker validation report to [stderr] and aborts the program if it is invalid. See 27*9880d681SAndroid Build Coastguard Worker [llvm::verifyModule]. *) 28*9880d681SAndroid Build Coastguard Workerexternal assert_valid_module : Llvm.llmodule -> unit 29*9880d681SAndroid Build Coastguard Worker = "llvm_assert_valid_module" 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker(** [verify_function f] returns if the function [f] is valid, but prints a 32*9880d681SAndroid Build Coastguard Worker validation report to [stderr] and aborts the program if it is invalid. See 33*9880d681SAndroid Build Coastguard Worker [llvm::verifyFunction]. *) 34*9880d681SAndroid Build Coastguard Workerexternal assert_valid_function : Llvm.llvalue -> unit 35*9880d681SAndroid Build Coastguard Worker = "llvm_assert_valid_function" 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker(** [view_function_cfg f] opens up a ghostscript window displaying the CFG of 38*9880d681SAndroid Build Coastguard Worker the current function with the code for each basic block inside. 39*9880d681SAndroid Build Coastguard Worker See [llvm::Function::viewCFG]. *) 40*9880d681SAndroid Build Coastguard Workerexternal view_function_cfg : Llvm.llvalue -> unit = "llvm_view_function_cfg" 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker(** [view_function_cfg_only f] works just like [view_function_cfg], but does not 43*9880d681SAndroid Build Coastguard Worker include the contents of basic blocks into the nodes. 44*9880d681SAndroid Build Coastguard Worker See [llvm::Function::viewCFGOnly]. *) 45*9880d681SAndroid Build Coastguard Workerexternal view_function_cfg_only : Llvm.llvalue -> unit 46*9880d681SAndroid Build Coastguard Worker = "llvm_view_function_cfg_only" 47