C-Breeze
C Compiler Infrastructure

[ Project home page]
Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

memoryaccess.h File Reference

#include <set>
#include "pointeroptions.h"
#include "location.h"
#include <ext/hash_map>
#include <ext/hash_set>

Go to the source code of this file.

Compounds

class  assignmentSet
class  memoryAccess
class  memoryAssignment
class  memoryDef
class  memorydef_key
class  memoryUse
class  orderedDefs
class  orderedUses
class  vector_set
 Vector-based set. More...


Typedefs

typedef vector_set< memoryBlock * > memoryblock_set
 Memory block set.

typedef memoryblock_set::iterator memoryblock_set_p
typedef memoryblock_set::const_iterator memoryblock_set_cp
typedef vector< memorydef_keymemorydef_list
 Memory def list.

typedef memorydef_list::iterator memorydef_list_p
typedef memorydef_list::const_iterator memorydef_list_cp
typedef set< memoryDef * > memorydef_set
 Memory def set.

typedef memorydef_set::iterator memorydef_set_p
typedef memorydef_set::const_iterator memorydef_set_cp
typedef map< Location *, memoryDef * > memorydef_location_map
typedef memorydef_location_map::iterator memorydef_location_map_p
typedef memorydef_location_map::const_iterator memorydef_location_map_cp
typedef vector< memoryUse * > memoryuse_list
typedef memoryuse_list::iterator memoryuse_list_p
typedef memoryuse_list::const_iterator memoryuse_list_cp
typedef set< memoryUse * > memoryuse_set
typedef memoryuse_set::iterator memoryuse_set_p
typedef memoryuse_set::const_iterator memoryuse_set_cp
typedef enum Multiplicity Multiplicity
 Multiplicity values.

typedef map< Location *, memoryUse * > memoryuse_map
typedef memoryuse_map::iterator memoryuse_map_p
typedef memoryuse_map::const_iterator memoryuse_map_cp
typedef memoryuse_map::value_type memoryuse_map_pair
typedef map< basicblockNode *,
memoryUse * > 
pred_use_map
typedef pred_use_map::iterator pred_use_map_p
typedef pred_use_map::const_iterator pred_use_map_cp
typedef map< Location *, pred_use_mapmerge_use_map
typedef merge_use_map::iterator merge_use_map_p
typedef merge_use_map::const_iterator merge_use_map_cp
typedef pair< Location *,
memoryBlock * > 
assignment_key
typedef map< assignment_key,
memoryAssignment * > 
assignment_map
typedef assignment_map::iterator assignment_map_p

Enumerations

enum  Multiplicity {
  Top, Deallocated, Unallocated, Single,
  Bounded, Unbounded, Error
}
 Multiplicity values. More...


Typedef Documentation

typedef pair< Location *, memoryBlock *> assignment_key
 

Definition at line 593 of file memoryaccess.h.

Referenced by assignmentSet::assignment_at().

typedef map< assignment_key, memoryAssignment * > assignment_map
 

Definition at line 595 of file memoryaccess.h.

typedef assignment_map::iterator assignment_map_p
 

Definition at line 596 of file memoryaccess.h.

typedef vector_set< memoryBlock * > memoryblock_set
 

Memory block set.

This class is used for many things in the analyzer, but in particular for points-to sets. Since these tend to be small, a vector is actually more efficient that using the "set" STL container.

Definition at line 115 of file memoryaccess.h.

Referenced by memoryDef::points_to(), and memoryBlock::top_most_containers().

typedef memoryblock_set::const_iterator memoryblock_set_cp
 

Definition at line 117 of file memoryaccess.h.

Referenced by Pointers::assignment_operator(), constantAnalyzer::evaluate_points_to(), procedureInfo::lookup_merge_point(), mergePoints::lookup_merge_point(), Pointers::pass_external_inputs(), Pointers::pass_external_outputs(), Pointers::print_memoryblock_def_set(), Pointers::print_memoryblock_set(), Pointers::process_merge_point(), memoryBlock::reachable_blocks(), and Pointers::star_operator().

typedef memoryblock_set::iterator memoryblock_set_p
 

Definition at line 116 of file memoryaccess.h.

Referenced by memoryBlock::add_complicit_assignment(), Pointers::assignment_operator(), constantAnalyzer::at_assignment(), constantAnalyzer::at_conservative_procedure_call(), Pointers::at_deallocation(), constantAnalyzer::at_parameter_pass(), Pointers::call_operator(), livenessAnalyzer::collectDefs(), Pointers::conservative_procedure_call(), Pointers::determine_call_targets(), Pointers::dot_operator(), Pointers::eval(), Pointers::generate_uses(), procedureInfo::get_pending_changes(), Pointers::mark_as_indexed(), Pointers::process_local_changes(), constantAnalyzer::rebuild_flowvalue(), precisionAnalyzer::record(), Pointers::record_external_inputs_and_outputs(), precisionAnalyzer::report(), Pointers::star_operator(), memoryBlock::top_most_container(), and memoryBlock::top_most_containers().

typedef vector< memorydef_key > memorydef_list
 

Memory def list.

This is a critical data structure: it keeps an ordered list of definitions of a memoryBlock so that they can be searched very quickly to find the nearest dominating definition. To do this, I've create a special class called memorydef_key, which duplicates some of the information needed to perform the dominance test.

Definition at line 127 of file memoryaccess.h.

Referenced by orderedDefs::def_list().

typedef memorydef_list::const_iterator memorydef_list_cp
 

Definition at line 129 of file memoryaccess.h.

Referenced by memoryBlock::clear(), orderedDefs::clear(), orderedDefs::find_dominating_def(), orderedDefs::find_strictly_dominating_def(), and orderedDefs::print().

typedef memorydef_list::iterator memorydef_list_p
 

Definition at line 128 of file memoryaccess.h.

Referenced by orderedDefs::make_def_at(), orderedDefs::prune(), and orderedDefs::stats().

typedef map< Location *, memoryDef * > memorydef_location_map
 

Definition at line 138 of file memoryaccess.h.

typedef memorydef_location_map::const_iterator memorydef_location_map_cp
 

Definition at line 140 of file memoryaccess.h.

Referenced by orderedDefs::find_def().

typedef memorydef_location_map::iterator memorydef_location_map_p
 

Definition at line 139 of file memoryaccess.h.

Referenced by orderedDefs::make_def_at().

typedef set< memoryDef * > memorydef_set
 

Memory def set.

Definition at line 134 of file memoryaccess.h.

Referenced by memoryAssignment::defs().

typedef memorydef_set::const_iterator memorydef_set_cp
 

Definition at line 136 of file memoryaccess.h.

Referenced by Pointers::print_memorydef_set().

typedef memorydef_set::iterator memorydef_set_p
 

Definition at line 135 of file memoryaccess.h.

Referenced by livenessAnalyzer::determineLiveness().

typedef vector< memoryUse * > memoryuse_list
 

Definition at line 144 of file memoryaccess.h.

typedef memoryuse_list::const_iterator memoryuse_list_cp
 

Definition at line 146 of file memoryaccess.h.

typedef memoryuse_list::iterator memoryuse_list_p
 

Definition at line 145 of file memoryaccess.h.

Referenced by constantAnalyzer::at_merge(), livenessAnalyzer::determineLiveness(), and Pointers::merge_operator().

typedef map< Location *, memoryUse * > memoryuse_map
 

Definition at line 450 of file memoryaccess.h.

typedef memoryuse_map::const_iterator memoryuse_map_cp
 

Definition at line 452 of file memoryaccess.h.

Referenced by orderedUses::clear(), orderedUses::find_use(), and orderedUses::print().

typedef memoryuse_map::iterator memoryuse_map_p
 

Definition at line 451 of file memoryaccess.h.

Referenced by orderedUses::def_uses(), orderedUses::prune(), and orderedUses::update_def_use_chains().

typedef memoryuse_map::value_type memoryuse_map_pair
 

Definition at line 453 of file memoryaccess.h.

Referenced by orderedUses::make_use_at().

typedef set< memoryUse * > memoryuse_set
 

Definition at line 148 of file memoryaccess.h.

Referenced by Pointers::analyze(), Pointers::analyze_procedure_at(), ipConstantsChanger::at_expr(), Pointers::pass_parameters(), Pointers::pass_return_value(), Pointers::record_external_inputs_and_outputs(), Pointers::setup_va_list_variables(), and memoryAssignment::uses().

typedef memoryuse_set::const_iterator memoryuse_set_cp
 

Definition at line 150 of file memoryaccess.h.

typedef memoryuse_set::iterator memoryuse_set_p
 

Definition at line 149 of file memoryaccess.h.

Referenced by ipConstantsChanger::at_expr(), and Pointers::record_external_inputs_and_outputs().

typedef map< Location *, pred_use_map > merge_use_map
 

Definition at line 459 of file memoryaccess.h.

typedef merge_use_map::const_iterator merge_use_map_cp
 

Definition at line 461 of file memoryaccess.h.

Referenced by orderedUses::clear(), orderedUses::def_uses(), orderedUses::print(), and orderedUses::update_def_use_chains().

typedef merge_use_map::iterator merge_use_map_p
 

Definition at line 460 of file memoryaccess.h.

Referenced by orderedUses::find_uses_at(), and orderedUses::make_merge_uses_at().

typedef enum Multiplicity Multiplicity
 

Multiplicity values.

Referenced by Pointers::assignment_operator(), Pointers::at_allocation(), memoryBlock::at_allocation(), Pointers::at_deallocation(), memoryBlock::at_deallocation(), Pointers::current_multiplicity(), Pointers::merge_operator(), memoryAccess::multiplicity(), Pointers::record_external_inputs_and_outputs(), and Pointers::self_assignment().

typedef map< basicblockNode *, memoryUse *> pred_use_map
 

Definition at line 455 of file memoryaccess.h.

Referenced by orderedUses::clear(), orderedUses::def_uses(), orderedUses::find_uses_at(), orderedUses::make_merge_uses_at(), memoryBlock::merge_uses_at(), orderedUses::print(), memoryBlock::setup_merge_uses_at(), and orderedUses::update_def_use_chains().

typedef pred_use_map::const_iterator pred_use_map_cp
 

Definition at line 457 of file memoryaccess.h.

Referenced by orderedUses::clear(), orderedUses::def_uses(), memoryBlock::merge_uses_at(), orderedUses::print(), memoryBlock::setup_merge_uses_at(), and orderedUses::update_def_use_chains().

typedef pred_use_map::iterator pred_use_map_p
 

Definition at line 456 of file memoryaccess.h.

Referenced by orderedUses::find_uses_at().


Enumeration Type Documentation

enum Multiplicity
 

Multiplicity values.

Enumeration values:
Top 
Deallocated 
Unallocated 
Single 
Bounded 
Unbounded 
Error 

Definition at line 158 of file memoryaccess.h.


Generated on August 27, 2003
Back to the C-Breeze home page