C-Breeze
C Compiler Infrastructure

[ Project home page]

analysisProblem Class Reference

#include <ipanalysis.h>

Inheritance diagram for analysisProblem:

livenessAnalyzer precisionAnalyzer List of all members.

Public Member Functions

 analysisProblem (Direction direction)
 Create a new analysis problem object.
Direction direction () const
 Get the direction.
virtual string name ()=0
 Name of the analysis.
virtual bool compare_property_value (Location *where, memoryBlock *property_block, procedureInfo *callee)
 Compare current property value against the last input to callee.
virtual void record_input_to_value (procedureInfo *callee, memoryBlock *property_block, stmtLocation *callsite)
 Record the value of a property when it is used as an input_to/external_input value to a call to callee at a call site.
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)
virtual void at_unary (stmtLocation *current, threeAddrNode *r, pointerValue &operand, pointerValue &result)
virtual void at_sizeof (stmtLocation *current, threeAddrNode *r, pointerValue &operand, pointerValue &result)
virtual void at_binary (stmtLocation *current, stmtNode *r, pointerValue &left, pointerValue &right, pointerValue &result)
virtual void at_cast (stmtLocation *current, operandNode *operand, pointerValue &operand_value, pointerValue &result)
virtual void at_const (stmtLocation *current, constNode *cons, pointerValue &result)
virtual void at_call (stmtLocation *current, operandNode *call, pointerValue &call_target, procNode *callee, pointervalue_list &arguments, pointerValue &return_val)
virtual void at_field_access (stmtLocation *current, operandNode *operand, pointerValue &operand_value, pointerValue &result)
virtual void at_dereference (stmtLocation *current, operandNode *operand, pointerValue &operand_value, pointerValue &result)
virtual void at_address (stmtLocation *current, operandNode *operand, pointerValue &operand_value, pointerValue &result)
virtual void at_index (stmtLocation *current, operandNode *operand, pointerValue &left, pointerValue &right, pointerValue &result)
virtual void at_assignment (stmtLocation *current, pointerValue &left, pointerValue &right, pointerValue &result, memoryblock_set &changes)
virtual void at_parameter_pass (Location *current, stmtLocation *parameter_callsite, pointerValue &left, pointerValue &right, memoryblock_set &changes)
virtual void at_self_assignment (Location *source, Location *target, memoryBlock *block, memoryblock_set &changes, bool is_input)
virtual void at_return (Location *current, pointerValue &left, pointerValue &right, memoryblock_set &changes)
virtual void at_threeAddr (stmtLocation *stmt, threeAddrNode *threeaddr, pointerValue &result)
virtual void at_conditiongoto (stmtLocation *stmt, conditiongotoNode *c, pointerValue &left, pointerValue &right, pointerValue &result)
virtual void at_allocation (stmtLocation *stmt, pointervalue_list &arguments, memoryBlock *block, memoryblock_set &changes)
virtual void at_deallocation (stmtLocation *stmt, pointerValue &to_deallocate, memoryblock_set &changes)
virtual void at_merge (Location *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, operandNode *call, operand_list &args, 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.

Definition at line 72 of file ipanalysis.h.


Member Function Documentation

virtual void analysisProblem::at_address (  stmtLocation *  current,
operandNode *  operand,
pointerValue &  operand_value,
pointerValue &  result
)  [inline, virtual]
 

Definition at line 151 of file ipanalysis.h.

virtual void analysisProblem::at_allocation (  stmtLocation *  stmt,
pointervalue_list &  arguments,
memoryBlock *  block,
memoryblock_set &  changes
)  [inline, virtual]
 

Reimplemented in livenessAnalyzer.

Definition at line 208 of file ipanalysis.h.

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

Reimplemented in livenessAnalyzer.

Definition at line 166 of file ipanalysis.h.

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

Reimplemented in livenessAnalyzer.

Definition at line 230 of file ipanalysis.h.

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

Definition at line 243 of file ipanalysis.h.

virtual void analysisProblem::at_binary (  stmtLocation *  current,
stmtNode *  r,
pointerValue &  left,
pointerValue &  right,
pointerValue &  result
)  [inline, virtual]
 

Definition at line 112 of file ipanalysis.h.

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

Reimplemented in livenessAnalyzer.

Definition at line 130 of file ipanalysis.h.

virtual void analysisProblem::at_cast (  stmtLocation *  current,
operandNode *  operand,
pointerValue &  operand_value,
pointerValue &  result
)  [inline, virtual]
 

Definition at line 119 of file ipanalysis.h.

virtual void analysisProblem::at_conditiongoto (  stmtLocation *  stmt,
conditiongotoNode *  c,
pointerValue &  left,
pointerValue &  right,
pointerValue &  result
)  [inline, virtual]
 

Reimplemented in livenessAnalyzer.

Definition at line 200 of file ipanalysis.h.

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

Definition at line 250 of file ipanalysis.h.

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

Definition at line 124 of file ipanalysis.h.

virtual void analysisProblem::at_deallocation (  stmtLocation *  stmt,
pointerValue &  to_deallocate,
memoryblock_set &  changes
)  [inline, virtual]
 

Reimplemented in livenessAnalyzer.

Definition at line 214 of file ipanalysis.h.

virtual void analysisProblem::at_dereference (  stmtLocation *  current,
operandNode *  operand,
pointerValue &  operand_value,
pointerValue &  result
)  [inline, virtual]
 

Reimplemented in precisionAnalyzer.

Definition at line 145 of file ipanalysis.h.

virtual void analysisProblem::at_field_access (  stmtLocation *  current,
operandNode *  operand,
pointerValue &  operand_value,
pointerValue &  result
)  [inline, virtual]
 

Reimplemented in precisionAnalyzer.

Definition at line 139 of file ipanalysis.h.

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

Definition at line 96 of file ipanalysis.h.

virtual void analysisProblem::at_index (  stmtLocation *  current,
operandNode *  operand,
pointerValue &  left,
pointerValue &  right,
pointerValue &  result
)  [inline, virtual]
 

Reimplemented in livenessAnalyzer, and precisionAnalyzer.

Definition at line 157 of file ipanalysis.h.

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

Reimplemented in livenessAnalyzer.

Definition at line 221 of file ipanalysis.h.

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

Definition at line 173 of file ipanalysis.h.

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

Reimplemented in livenessAnalyzer.

Definition at line 260 of file ipanalysis.h.

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

Reimplemented in livenessAnalyzer.

Definition at line 265 of file ipanalysis.h.

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

Definition at line 189 of file ipanalysis.h.

virtual void analysisProblem::at_self_assignment (  Location *  source,
Location *  target,
memoryBlock *  block,
memoryblock_set &  changes,
bool  is_input
)  [inline, virtual]
 

Definition at line 180 of file ipanalysis.h.

virtual void analysisProblem::at_sizeof (  stmtLocation *  current,
threeAddrNode *  r,
pointerValue &  operand,
pointerValue &  result
)  [inline, virtual]
 

Definition at line 106 of file ipanalysis.h.

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

Definition at line 235 of file ipanalysis.h.

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

Reimplemented in livenessAnalyzer.

Definition at line 239 of file ipanalysis.h.

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

Reimplemented in livenessAnalyzer.

Definition at line 196 of file ipanalysis.h.

virtual void analysisProblem::at_unary (  stmtLocation *  current,
threeAddrNode *  r,
pointerValue &  operand,
pointerValue &  result
)  [inline, virtual]
 

Definition at line 100 of file ipanalysis.h.

virtual bool analysisProblem::compare_property_value (  Location *  where,
memoryBlock *  property_block,
procedureInfo *  callee
)  [inline, virtual]
 

Compare current property value against the last input to callee.

Returns true if equal.

Definition at line 275 of file ipanalysis.h.

Direction analysisProblem::direction (   )  const [inline]
 

Get the direction.

Definition at line 78 of file ipanalysis.h.

References _direction.

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

Name of the analysis.

Just for debug purposes.

Implemented in livenessAnalyzer, and precisionAnalyzer.

virtual void analysisProblem::record_input_to_value (  procedureInfo *  callee,
memoryBlock *  property_block,
stmtLocation *  callsite
)  [inline, virtual]
 

Record the value of a property when it is used as an input_to/external_input value to a call to callee at a call site.

Definition at line 282 of file ipanalysis.h.


Member Data Documentation

Direction analysisProblem::_direction [protected]
 

Definition at line 64 of file ipanalysis.h.

Referenced by direction().


The documentation for this class was generated from the following file:

Generated on February 1, 2006
Back to the C-Breeze home page