GSAFullRangeDict Class Referencefile GSAFullRangeDict.h Collection of ranges extracted from GSA program's control flow
More...
#include <GSAFullRangeDict.h>
Inheritance diagram for GSAFullRangeDict:
[legend]List of all members.
Detailed Description
file GSAFullRangeDict.h Collection of ranges extracted from GSA program's control flow
Polaris Range - See also:
- GSAFullRangeDict.h
GSAFullRangeDict.h
GSAFullRangeDict.cc
An GSAFullRangeDict object is a repository for variable ranges for a program unit in GSA form. Ranges derived from both data flow and control flow are collected, (unlike GSAControlRangeDict.h).
An GSAFullRangeDict object is a repository of the variable ranges for all points of a program unit in GSA 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.
GSAFullRangeDict 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 GSA form can be found in Blume and Eigenmann, "Demand- Driven Symbolic Range Propagation".
Definition at line 62 of file GSAFullRangeDict.h.
Constructor & Destructor Documentation
| GSAFullRangeDict::GSAFullRangeDict |
( |
ProgramUnit & |
pgm, |
|
|
int |
debug = 0 |
|
) |
|
|
Member Function Documentation
| void GSAFullRangeDict::touch |
( |
|
) |
|
|
| void GSAFullRangeDict::control_touch |
( |
|
) |
|
|
| void GSAFullRangeDict::data_touch |
( |
|
) |
|
|
| void GSAFullRangeDict::clear |
( |
|
) |
|
|
| void GSAFullRangeDict::clear_ranges |
( |
|
) |
|
|
| int GSAFullRangeDict::num_data_ranges |
( |
|
) |
const |
|
| int GSAFullRangeDict::num_poisoned_ranges |
( |
|
) |
const |
|
| void GSAFullRangeDict::print |
( |
ostream & |
o |
) |
const [virtual] |
|
| void GSAFullRangeDict::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 1034 of file GSAFullRangeDict.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(), GSAControlRangeDict::pretty_print(), pretty_print_range(), Iterator< T >::reset(), sort_sym_list(), Iterator< T >::valid(), and KeyIterator< S, T >::valid(). |
| Listable * GSAFullRangeDict::listable_clone |
( |
void |
|
) |
const [virtual] |
|
| int GSAFullRangeDict::structures_OK |
( |
|
) |
const [virtual] |
|
| void GSAFullRangeDict::_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 843 of file GSAFullRangeDict.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 GSAControlRangeDict::representative_stmt().
Referenced by touch(). |
Friends And Related Function Documentation
The documentation for this class was generated from the following files:
|