Main Page Modules Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members Related Pages
precisionAnalyzer Class Reference#include <precision.h>
Inheritance diagram for precisionAnalyzer:
List of all members.
|
Public Member Functions |
| precisionAnalyzer () |
| Create a new precision analyzer object.
|
virtual string | name () |
| Name of the analysis.
|
virtual void | at_field_access (stmtLocation *current, operandNode *operand, pointerValue &operand_value, pointerValue &result) |
| At each field access.
|
virtual void | at_dereference (stmtLocation *current, operandNode *operand, pointerValue &operand_value, pointerValue &result) |
| At each dereference.
|
virtual void | at_index (stmtLocation *current, operandNode *operand, pointerValue &left, pointerValue &right, pointerValue &result) |
| At an array index.
|
void | report (ostream &out) |
| Report.
|
Direction | direction () const |
| Get the direction.
|
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, Location *where) |
| 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.
|
|
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_address (stmtLocation *current, operandNode *operand, pointerValue &operand_value, 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 &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 |
Private Types |
typedef pair< stmtLocation *,
memoryBlock * > | stmt_pointer_pair |
typedef map< stmt_pointer_pair,
memoryblock_set > | pointer_targets_map |
typedef pointer_targets_map::iterator | pointer_targets_map_p |
Private Member Functions |
void | record (stmtLocation *current, pointerValue &operand, pointerValue &result) |
Private Attributes |
pointer_targets_map | _pointer_targets |
| Pointer targets.
|
long int | _derefs |
| Dereference count.
|
Member Typedef Documentation
typedef pointer_targets_map::iterator precisionAnalyzer::pointer_targets_map_p [private]
|
|
Constructor & Destructor Documentation
precisionAnalyzer::precisionAnalyzer |
( |
|
) |
|
|
Member Function Documentation
Direction analysisProblem::direction |
( |
|
) |
const [inline, inherited] |
|
virtual string precisionAnalyzer::name |
( |
|
) |
[inline, virtual] |
|
|
Definition at line 214 of file precision.cc.
References _derefs, _pointer_targets, pointerValue::blocks, vector_set< memoryBlock * >::insert(), pointerValue::is_address, memoryblock_set_p, stmtNode::output(), stmtLocation::stmt(), and stmt_pointer_pair.
Referenced by at_dereference(), at_field_access(), and at_index(). |
void precisionAnalyzer::report |
( |
ostream & |
out |
) |
|
|
Member Data Documentation
long int precisionAnalyzer::_derefs [private]
|
|
Direction analysisProblem::_direction [protected, inherited]
|
|
|
Pointer targets.
For each dereference, store the targets of the pointer according to the pointer variable itself and location.
Definition at line 57 of file precision.h.
Referenced by record(), and report(). |
The documentation for this class was generated from the following files:
|