Class PassInstrumentObj#
Defined in File transform.h
Inheritance Relationships#
Base Type#
public ffi::Object
Class Documentation#
-
class PassInstrumentObj : public ffi::Object#
PassInstrumentObj forms an instrument implementation. It provides API for users to register callbacks at different instrumentation points.
Within a PassContext, call sequence of a PassInstrument implementation is like:
with PassContext(instruments=[pi]): # pi = a PassInstrument implementation pi.EnterPassContext()
if pi.ShouldRun(Pass1): pi.RunBeforePass() Pass1() pi.RunAfterPass()
if pi.ShouldRun(Pass2): pi.RunBeforePass() Pass2() pi.RunAfterPass()
pi.ExitPassContext()
EnterPassContextandExitPassContextare only called once when entering/exiting a PassContext.ShouldRun,RunBeforePassandRunAfterPassare called multiple times depending on how many passes.If there are multiple pass instrumentations provided, the instrument points are the same. PassInstrument implementations’ callbacks are called in order:
with PassContext(instruments=[pi1, pi2]): # pi1, pi2 = two distinct PassInstrument impls pi.EnterPassContext() for pi in instruments
should_run = all([pi.ShoudRun(Pass1) for pi in instruments)]) if (should_run) pi.RunBeforePass() for pi in instruments Pass1() pi.RunAfterPass() for pi in instruments
should_run = all([pi.ShouldRun(Pass2) for pi in instruments)]) if (should_run) pi.RunBeforePass() for pi in instruments Pass2() pi.RunAfterPass() for pi in instruments
pi.ExitPassContext() for pi in instruments
Note:
Assume there is no dependency between PassInstrument implementations in
instruments.EnterPassContextandExitPassContexthavewithbehavior (see PassContext and its FFI): If there is any exception raised inShouldRun(),RunBeforePass(),RunAfterPass()andPass(),ExitPassContext()is still called.In mutiple PassInstrument instances scenario, callbacks are called in order: If one throws exceptions, remainings will not be called.
See also
See also
src/ir/transform.cc
Public Functions
-
inline virtual ~PassInstrumentObj()#
-
virtual void EnterPassContext() const = 0#
Instrument when entering PassContext. Called once within a PassContext.
-
virtual void ExitPassContext() const = 0#
Instrument when exiting PassContext. Called once within a PassContext.
-
virtual bool ShouldRun(const IRModule &mod, const transform::PassInfo &info) const = 0#
Determine whether to run the pass or not. Called multiple times depend on number of passes.
- Parameters:
mod – The module that an optimization pass runs on.
info – The pass information.
- Returns:
true to run the pass; false to skip the pass.
Public Members
-
ffi::String name#
Name of this pass instrument object.