SSAFullRangeDict Class Referencefile SSAFullRangeDict.h Collection of ranges extracted from SSA program's control flow
More...
#include <SSAFullRangeDict.h>
Inheritance diagram for SSAFullRangeDict:
[legend]List of all members.
Detailed Description
file SSAFullRangeDict.h Collection of ranges extracted from SSA program's control flow
Polaris Range - See also:
- SSAFullRangeDict.h
SSAFullRangeDict.h
SSAFullRangeDict.cc
An SSAFullRangeDict object is a repository for variable ranges for a program unit in SSA form. Ranges derived from both data flow and control flow are collected, (unlike SSAControlRangeDict.h).
An SSAFullRangeDict object is a repository of the variable ranges for all points of a program unit in SSA form. These ranges are extracted from the data flow and control flow of the program; that is, they are taken from IF conditional tests, DO statements, and CSRD$ ASSERT statements, assignment statements, and phi statements.
SSAFullRangeDict objects are demand-driven. That is, they compute the ranges for a particular statement only when they are asked for. If instead, the user wishes to have all the program unit's ranges to be computed at once, the user can call the touch() method..
The algorithm for computing the ranges of a program on demand using SSA form can be found in Blume and Eigenmann, "Demand- Driven Symbolic Range Propagation".
Definition at line 59 of file SSAFullRangeDict.h.
Constructor & Destructor Documentation
| SSAFullRangeDict::SSAFullRangeDict |
( |
SSAProgramUnit & |
pgm, |
|
|
int |
debug = 0 |
|
) |
|
|
Member Function Documentation
| void SSAFullRangeDict::touch |
( |
|
) |
|
|
| void SSAFullRangeDict::control_touch |
( |
|
) |
|
|
| void SSAFullRangeDict::data_touch |
( |
|
) |
|
|
| void SSAFullRangeDict::clear |
( |
|
) |
|
|
| void SSAFullRangeDict::clear_ranges |
( |
|
) |
|
|
| int SSAFullRangeDict::num_data_ranges |
( |
|
) |
const |
|
| int SSAFullRangeDict::num_poisoned_ranges |
( |
|
) |
const |
|
| void SSAFullRangeDict::print |
( |
ostream & |
o |
) |
const [virtual] |
|
| void SSAFullRangeDict::pretty_print |
( |
ostream & |
o, |
|
|
const Statement & |
stmt |
|
) |
const [virtual] |
|
|
|
Print out the range dictionary in a more user-readable manner.
Implements RangeDict.
Definition at line 1014 of file SSAFullRangeDict.cc.
References _debug_level, RefList< T >::clear(), Iterator< T >::current(), KeyIterator< S, T >::current_key(), ProtoRefMap< S, T >::find_ref(), ProtoMap< S, T >::find_ref(), RefList< T >::ins_last(), OMEGA_OP, Expression::op(), SSAControlRangeDict::pretty_print(), pretty_print_range(), Iterator< T >::reset(), sort_sym_list(), Iterator< T >::valid(), and KeyIterator< S, T >::valid(). |
| Listable * SSAFullRangeDict::listable_clone |
( |
void |
|
) |
const [virtual] |
|
| int SSAFullRangeDict::structures_OK |
( |
|
) |
const [virtual] |
|
| void SSAFullRangeDict::_del_range |
( |
const Symbol & |
var, |
|
|
const Statement & |
stmt |
|
) |
[protected, virtual] |
|
|
|
Return the range associated with the given variable.
If the variable doesn't have an associated range, return 0;
Implements RangeDict.
Definition at line 823 of file SSAFullRangeDict.cc.
References ExprSet::clear(), RefMap< S, T >::del(), ProtoRefMap< S, T >::find_ref(), ProtoMap< S, T >::find_ref(), RangeAccessor::get_range_ref(), ExprSet::ins(), RefMap< S, T >::ins(), Map< S, T >::ins(), INTEGER_TYPE, intersect_ranges(), omega(), OMEGA_OP, Expression::op(), and SSAControlRangeDict::representative_stmt().
Referenced by touch(). |
The documentation for this class was generated from the following files:
|