Otawa
0.10
|
Classes | |
class | DefaultFixPoint |
class | DefaultListener |
This listener gathers in an array the LUB of the in-states for all analyzed basic blocks. More... | |
class | FirstUnrollingFixPoint |
FixPoint class for HalfAbsInt The DefaultFixPoint manages loops in a simple way. More... | |
class | HalfAbsInt |
Implements abstract interpretation. More... | |
class | UnrollingListener |
This listener gathers in an array the LUB of the in-states for all analyzed basic blocks. More... | |
class | WideningFixPoint |
class | WideningListener |
This listener gathers in an array the LUB of the in-states for all analyzed basic blocks. More... | |
Typedefs | |
typedef enum otawa::dfa::hai::hai_context_t | hai_context_t |
Enumerations | |
enum | hai_context_t { CTX_LOOP = 0, CTX_FUNC = 1 } |
Functions | |
Identifier< bool > | FIXED ("otawa::util::fixed", false) |
This property is attached to the loop headers, and is true if the FixPoint for the associated loop has been reached. More... | |
Identifier< bool > | FIRST_ITER ("otawa::util::first_iter", true) |
This property is attached for the loop header, and is true if the first iteration of the associated loop is not done yet. More... | |
Identifier< bool > | HAI_DONT_ENTER ("otawa::util::hai_dont_enter", false) |
This property, when set to TRUE on a BasicBlock or a CFG, prevents HalfAbsInt from following edges to this BasicBlock or CFG. More... | |
Identifier< BasicBlock * > | HAI_BYPASS_SOURCE ("otawa::util::HAI_BYPASS_SOURCE", 0) |
This property enables the user to create a virtual "bypass" edge from the source block to the target block. More... | |
Identifier< BasicBlock * > | HAI_BYPASS_TARGET ("otawa::util::HAI_BYPASS_TARGET", 0) |
Variables | |
Identifier< bool > | FIXED |
This property is attached to the loop headers, and is true if the FixPoint for the associated loop has been reached. More... | |
Identifier< bool > | FIRST_ITER |
This property is attached for the loop header, and is true if the first iteration of the associated loop is not done yet. More... | |
Identifier< bool > | HAI_DONT_ENTER |
This property, when set to TRUE on a BasicBlock or a CFG, prevents HalfAbsInt from following edges to this BasicBlock or CFG. More... | |
Identifier< BasicBlock * > | HAI_BYPASS_SOURCE |
This property enables the user to create a virtual "bypass" edge from the source block to the target block. More... | |
Identifier< BasicBlock * > | HAI_BYPASS_TARGET |
Identifier<bool> otawa::dfa::hai::FIRST_ITER | ( | "otawa::util::first_iter" | , |
true | |||
) |
This property is attached for the loop header, and is true if the first iteration of the associated loop is not done yet.
This is useful to determine if we can add the loop header to the worklist even if the back edges going to it are not marked yet.
Identifier<bool> otawa::dfa::hai::FIXED | ( | "otawa::util::fixed" | , |
false | |||
) |
This property is attached to the loop headers, and is true if the FixPoint for the associated loop has been reached.
Identifier<BasicBlock*> otawa::dfa::hai::HAI_BYPASS_SOURCE | ( | "otawa::util::HAI_BYPASS_SOURCE" | , |
0 | |||
) |
This property enables the user to create a virtual "bypass" edge from the source block to the target block.
Moreover, it ensures that this virtual edge is the only mean to reach target basic block from source basic block. This should be used only to bypass function calls in inlined CFGs.
Identifier<BasicBlock*> otawa::dfa::hai::HAI_BYPASS_TARGET | ( | "otawa::util::HAI_BYPASS_TARGET" | , |
0 | |||
) |
Identifier<bool> otawa::dfa::hai::HAI_DONT_ENTER | ( | "otawa::util::hai_dont_enter" | , |
false | |||
) |
This property, when set to TRUE on a BasicBlock or a CFG, prevents HalfAbsInt from following edges to this BasicBlock or CFG.
NOTE: It is deprecated to use this property to prevent HalfAbsint from entering a sub-CFG. Use HAI_BYPASS_EDGE instead.
Identifier<bool> otawa::dfa::hai::FIRST_ITER("otawa::util::first_iter", true) |
This property is attached for the loop header, and is true if the first iteration of the associated loop is not done yet.
This is useful to determine if we can add the loop header to the worklist even if the back edges going to it are not marked yet.
Referenced by otawa::dfa::hai::HalfAbsInt< FixPoint >::backEdgeUnion(), otawa::dfa::hai::HalfAbsInt< FixPoint >::inputProcessing(), otawa::dfa::hai::HalfAbsInt< FixPoint >::isEdgeDone(), and otawa::dfa::hai::HalfAbsInt< FixPoint >::tryAddToWorkList().
Identifier<bool> otawa::dfa::hai::FIXED("otawa::util::fixed", false) |
This property is attached to the loop headers, and is true if the FixPoint for the associated loop has been reached.
Referenced by otawa::dfa::hai::HalfAbsInt< FixPoint >::inputProcessing(), and otawa::dfa::hai::HalfAbsInt< FixPoint >::isEdgeDone().
Identifier<BasicBlock*> otawa::dfa::hai::HAI_BYPASS_SOURCE("otawa::util::HAI_BYPASS_SOURCE", 0) |
This property enables the user to create a virtual "bypass" edge from the source block to the target block.
Moreover, it ensures that this virtual edge is the only mean to reach target basic block from source basic block. This should be used only to bypass function calls in inlined CFGs.
Referenced by otawa::dfa::hai::HalfAbsInt< FixPoint >::addSuccessors().
Identifier<BasicBlock*> otawa::dfa::hai::HAI_BYPASS_TARGET("otawa::util::HAI_BYPASS_TARGET", 0) |
Identifier<bool> otawa::dfa::hai::HAI_DONT_ENTER("otawa::util::hai_dont_enter", false) |
This property, when set to TRUE on a BasicBlock or a CFG, prevents HalfAbsInt from following edges to this BasicBlock or CFG.
NOTE: It is deprecated to use this property to prevent HalfAbsint from entering a sub-CFG. Use HAI_BYPASS_EDGE instead.
Referenced by otawa::dfa::hai::HalfAbsInt< FixPoint >::addSuccessors(), and otawa::dfa::hai::HalfAbsInt< FixPoint >::detectCalls().