OTAWA  2.0
Framework to perform machine analysis and compute WCET.
otawa::dfa::hai Namespace Reference

Classes

class  DefaultFixPoint
 
class  DefaultListener
 
class  FirstUnrollingFixPoint
 
class  HalfAbsInt
 
class  UnrollingListener
 
class  WideningFixPoint
 
class  WideningListener
 

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< boolFIRST_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< boolFIXED ("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< Block * > 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< Block * > HAI_BYPASS_TARGET ("otawa::util::HAI_BYPASS_TARGET", 0)
 
Identifier< boolHAI_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< boolHAI_INFINITE_LOOP ("otawa::util::HAI_INFINITE_LOOP", false)
 This property indicates a block is the header of an infinite loop. More...
 

Variables

Identifier< boolFIRST_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< boolFIXED
 This property is attached to the loop headers, and is true if the FixPoint for the associated loop has been reached. More...
 
Identifier< Block * > HAI_BYPASS_SOURCE
 This property enables the user to create a virtual "bypass" edge from the source block to the target block. More...
 
Identifier< Block * > HAI_BYPASS_TARGET
 
Identifier< boolHAI_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< boolHAI_INFINITE_LOOP
 This property indicates a block is the header of an infinite loop. More...
 

Typedef Documentation

◆ hai_context_t

Enumeration Type Documentation

◆ hai_context_t

Enumerator
CTX_LOOP 
CTX_FUNC 

Function Documentation

◆ FIRST_ITER()

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.

Hooks

◆ FIXED()

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.

Hooks

◆ HAI_BYPASS_SOURCE()

Identifier<Block*> otawa::dfa::hai::HAI_BYPASS_SOURCE ( "otawa::util::HAI_BYPASS_SOURCE"  ,
 
)

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.

◆ HAI_BYPASS_TARGET()

Identifier<Block*> otawa::dfa::hai::HAI_BYPASS_TARGET ( "otawa::util::HAI_BYPASS_TARGET"  ,
 
)

◆ HAI_DONT_ENTER()

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.

◆ HAI_INFINITE_LOOP()

Identifier<bool> otawa::dfa::hai::HAI_INFINITE_LOOP ( "otawa::util::HAI_INFINITE_LOOP"  ,
false   
)

This property indicates a block is the header of an infinite loop.

Variable Documentation

◆ FIRST_ITER

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.

Hooks

◆ FIXED

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.

Hooks

◆ HAI_BYPASS_SOURCE

Identifier<Block*> 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< otawa::dfa::hai::FirstUnrollingFixPoint >::addSuccessors().

◆ HAI_BYPASS_TARGET

Identifier<Block*> otawa::dfa::hai::HAI_BYPASS_TARGET("otawa::util::HAI_BYPASS_TARGET", 0)

◆ HAI_DONT_ENTER

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< otawa::dfa::hai::FirstUnrollingFixPoint >::addSuccessors().

◆ HAI_INFINITE_LOOP

Identifier<bool> otawa::dfa::hai::HAI_INFINITE_LOOP("otawa::util::HAI_INFINITE_LOOP", false)