package bap-std
A program analysis pass.
Pass is essentially a function that takes a project data structures, and returns a new project, possibly modified.
Passes may depend on other passes, and have a few properties, associated with them.
type t = pass
An error that can occur when loading or running pass.
Not_loaded name
pass with a givenname
wasn't loaded for some reason. This is a very unlikely error, indicating either a logic error in the plugin system implementation or something very weird, that we didn't expect.
Not_loaded name
when we tried to load plugin with a givenname
we failed to find it in our search paths.
Runtime_error (name,exn)
when plugin with a givenname
was run it raised anexn
.
val sexp_of_error : error -> Ppx_sexp_conv_lib.Sexp.t
exception Failed of error
raised when a pass failed to load or to run. Note: this exception is raised only from two functions in this module, that state this in their documentation and has _exn
suffix in their name.
run_pass project pass
applies pass
to a project
.
If a pass has dependencies, then they will be run before the pass in some topological order.
run_pass_exn proj
is the same as run_pass
, but raises an exception on error. Useful to provide custom error handling/printing.
val name : t -> string
name pass
is a pass name
val autorun : t -> bool
autorun pass
is true
if a pass
was created with autorun option