Main Page   Modules   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

analysisProblem Class Reference

#include <ipanalysis.h>

Inheritance diagram for analysisProblem::

constantAnalyzer ipConstantPropagation livenessAnalyzer List of all members.

Public Methods

 analysisProblem (Direction direction)
 Create a new analysis problem object. More...

Direction direction () const
 Get the direction. More...

virtual string name ()=0
 Name of the analysis. More...

Transfer functions
The rest of these functions are hooks for the pointer analyzer to call at various points in the analysis. They serve as the transfer functions for the dataflow analysis problem.

virtual void at_id (stmtLocation *current, idNode *id, pointerValue &result, bool result_is_a_use)
virtual void at_unary (stmtLocation *current, unaryNode *unary, pointerValue &operand, pointerValue &result, bool result_is_a_use)
virtual void at_binary (stmtLocation *current, binaryNode *binary, pointerValue &left, pointerValue &right, pointerValue &result, bool result_is_a_use)
virtual void at_cast (stmtLocation *current, castNode *cast, pointerValue &operand, pointerValue &result, bool result_is_a_use)
virtual void at_const (stmtLocation *current, constNode *cons, pointerValue &result, bool result_is_a_use)
virtual void at_call (stmtLocation *current, callNode *call, pointerValue &call_target, procNode *callee, pointervalue_list &arguments, pointerValue &return_val)
virtual void at_field_access (stmtLocation *current, binaryNode *binary, pointerValue &operand, idNode *field, pointerValue &result, bool result_is_a_use)
virtual void at_dereference (stmtLocation *current, unaryNode *unary, pointerValue &operand, pointerValue &result, bool result_is_a_use)
virtual void at_address (stmtLocation *current, unaryNode *unary, pointerValue &operand, pointerValue &result, bool result_is_a_use)
virtual void at_index (stmtLocation *current, binaryNode *binary, pointerValue &left, pointerValue &right, pointerValue &result, bool result_is_a_use)
virtual void at_assignment (stmtLocation *current, binaryNode *binary, pointerValue &left, pointerValue &right, pointerValue &result, bool result_is_a_use, memoryblock_set &changes)
virtual void at_parameter_pass (Location *current, pointerValue &left, pointerValue &right, pointerValue &result, memoryblock_set &changes)
virtual void at_return (stmtLocation *stmt, returnNode *ret, pointerValue &result, pointerValue &return_val)
virtual void at_exprstmt (stmtLocation *stmt, exprstmtNode *es, pointerValue &result)
virtual void at_if (stmtLocation *stmt, ifNode *ifnode, pointerValue &result)
virtual void at_merge (basicblockLocation *where, memoryBlock *block, memoryuse_list &phi_uses, pointerValue &result, memoryblock_set &changes)
virtual void at_basicblock_entry (basicblockLocation *block, procedureInfo *info, pointerValue &initial)
virtual void at_stmt_entry (stmtLocation *stmt, pointerValue &result)
virtual void at_stmt_exit (stmtLocation *stmt, pointerValue &result)
virtual void at_basicblock_exit (basicblockLocation *block, procedureInfo *info, pointerValue &final)
virtual void at_conservative_procedure_call (stmtLocation *current, callNode *call, pointerValue &call_target, pointervalue_list &arguments, memoryblock_set &reachable_blocks, pointerValue &return_val, memoryblock_set &changes)
virtual void at_procedure_entry (procLocation *proc, procedureInfo *info, pointerValue &return_val)
virtual void at_procedure_exit (procLocation *proc, procedureInfo *info, pointerValue &return_val)

Protected Attributes

Direction _direction

Constructor & Destructor Documentation

analysisProblem::analysisProblem (  Direction    direction )  [inline]
 

Create a new analysis problem object.

The only purpose of this constructor is to set the direction field.


Member Function Documentation

virtual void analysisProblem::at_address (  stmtLocation *    current,
unaryNode *    unary,
pointerValue &    operand,
pointerValue &    result,
bool    result_is_a_use
)  [inline, virtual]
 

Reimplemented in constantAnalyzer.

virtual void analysisProblem::at_assignment (  stmtLocation *    current,
binaryNode *    binary,
pointerValue &    left,
pointerValue &    right,
pointerValue &    result,
bool    result_is_a_use,
memoryblock_set &    changes
)  [inline, virtual]
 

Reimplemented in constantAnalyzer, and livenessAnalyzer.

virtual void analysisProblem::at_basicblock_entry (  basicblockLocation *    blockloc,
procedureInfo *    info,
pointerValue &    initial
)  [inline, virtual]
 

Reimplemented in constantAnalyzer, and livenessAnalyzer.

virtual void analysisProblem::at_basicblock_exit (  basicblockLocation *    block,
procedureInfo *    info,
pointerValue &    final
)  [inline, virtual]
 

virtual void analysisProblem::at_binary (  stmtLocation *    current,
binaryNode *    binary,
pointerValue &    left,
pointerValue &    right,
pointerValue &    result,
bool    result_is_a_use
)  [inline, virtual]
 

Reimplemented in constantAnalyzer.

virtual void analysisProblem::at_call (  stmtLocation *    current,
callNode *    call,
pointerValue &    call_target,
procNode *    callee,
pointervalue_list &    arguments,
pointerValue &    return_val
)  [inline, virtual]
 

Reimplemented in livenessAnalyzer.

virtual void analysisProblem::at_cast (  stmtLocation *    current,
castNode *    cast,
pointerValue &    operand,
pointerValue &    result,
bool    result_is_a_use
)  [inline, virtual]
 

Reimplemented in constantAnalyzer.

virtual void analysisProblem::at_conservative_procedure_call (  stmtLocation *    current,
callNode *    call,
pointerValue &    call_target,
pointervalue_list &    arguments,
memoryblock_set &    reachable_blocks,
pointerValue &    return_val,
memoryblock_set &    changes
)  [inline, virtual]
 

Reimplemented in constantAnalyzer.

virtual void analysisProblem::at_const (  stmtLocation *    current,
constNode *    cons,
pointerValue &    result,
bool    result_is_a_use
)  [inline, virtual]
 

Reimplemented in constantAnalyzer.

virtual void analysisProblem::at_dereference (  stmtLocation *    current,
unaryNode *    unary,
pointerValue &    operand,
pointerValue &    result,
bool    result_is_a_use
)  [inline, virtual]
 

Reimplemented in constantAnalyzer.

virtual void analysisProblem::at_exprstmt (  stmtLocation *    stmt,
exprstmtNode *    es,
pointerValue &    result
)  [inline, virtual]
 

Reimplemented in livenessAnalyzer.

virtual void analysisProblem::at_field_access (  stmtLocation *    current,
binaryNode *    binary,
pointerValue &    operand,
idNode *    field,
pointerValue &    result,
bool    result_is_a_use
)  [inline, virtual]
 

Reimplemented in constantAnalyzer.

virtual void analysisProblem::at_id (  stmtLocation *    current,
idNode *    id,
pointerValue &    block,
bool    result_is_a_use
)  [inline, virtual]
 

Reimplemented in constantAnalyzer.

virtual void analysisProblem::at_if (  stmtLocation *    stmt,
ifNode *    ifnode,
pointerValue &    result
)  [inline, virtual]
 

Reimplemented in livenessAnalyzer.

virtual void analysisProblem::at_index (  stmtLocation *    current,
binaryNode *    binary,
pointerValue &    left,
pointerValue &    right,
pointerValue &    result,
bool    result_is_a_use
)  [inline, virtual]
 

Reimplemented in constantAnalyzer, and livenessAnalyzer.

virtual void analysisProblem::at_merge (  basicblockLocation *    where,
memoryBlock *    block,
memoryuse_list &    phi_uses,
pointerValue &    result,
memoryblock_set &    changes
)  [inline, virtual]
 

Reimplemented in constantAnalyzer, and livenessAnalyzer.

virtual void analysisProblem::at_parameter_pass (  Location *    current,
pointerValue &    left,
pointerValue &    right,
pointerValue &    result,
memoryblock_set &    changes
)  [inline, virtual]
 

Reimplemented in constantAnalyzer.

virtual void analysisProblem::at_procedure_entry (  procLocation *    proc,
procedureInfo *    info,
pointerValue &    return_val
)  [inline, virtual]
 

Reimplemented in livenessAnalyzer.

virtual void analysisProblem::at_procedure_exit (  procLocation *    proc,
procedureInfo *    info,
pointerValue &    return_val
)  [inline, virtual]
 

Reimplemented in livenessAnalyzer.

virtual void analysisProblem::at_return (  stmtLocation *    stmt,
returnNode *    ret,
pointerValue &    result,
pointerValue &    return_val
)  [inline, virtual]
 

Reimplemented in constantAnalyzer, and livenessAnalyzer.

virtual void analysisProblem::at_stmt_entry (  stmtLocation *    stmt,
pointerValue &    result
)  [inline, virtual]
 

Reimplemented in constantAnalyzer.

virtual void analysisProblem::at_stmt_exit (  stmtLocation *    stmt,
pointerValue &    result
)  [inline, virtual]
 

Reimplemented in livenessAnalyzer.

virtual void analysisProblem::at_unary (  stmtLocation *    current,
unaryNode *    unary,
pointerValue &    operand,
pointerValue &    result,
bool    result_is_a_use
)  [inline, virtual]
 

Reimplemented in constantAnalyzer.

Direction analysisProblem::direction (    )  const [inline]
 

Get the direction.

virtual string analysisProblem::name (    )  [pure virtual]
 

Name of the analysis.

Just for debug purposes.

Reimplemented in constantAnalyzer, and livenessAnalyzer.


Member Data Documentation

Direction analysisProblem::_direction [protected]
 


The documentation for this class was generated from the following file:
Generated on Thu Jan 10 12:06:23 2002 for C-Breeze by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001