#include <segment.h>
Public Types | |
enum | Status { Untouched = 0, Touched = 1 } |
typedef std::vector< SgNode * > | Expressions |
Public Member Functions | |
Segment (SgNode const *const boundary_node) | |
Segment (const Segment &other) | |
void | analyze_segment () |
This function determines which variable are read and written in this segment. | |
void | analyze_expression (SgNode *expression, bool left_of_assignment, bool read_write, bool member_access) |
This function analyzes recursively all read and write accesses in this expression. | |
void | add_expression (SgNode *node) |
This function add the given node to the vector of expressions. | |
bool | operator== (const Segment &other) |
If two segments are equal the return value is true. | |
void | merge (const Segment &other) |
Public Attributes | |
boost::default_color_type | color |
Status | color_for_communication_graph_ |
Status | helper_for_graph_algorithms_ |
Expressions | expressions_ |
bool | debugging_ |
std::set< SgNode * > | conflicts_ |
int | id_ |
This is the unique id of the segment. | |
SgNode const *const | boundary_node_ |
This is the associated boundary of the segment. | |
boost::default_color_type | color_ |
This color is used for some boost algorithms. | |
std::set< SgVariableSymbol * > | read_variables_ |
Set of all SgVariableSymbol which are read in this segment. | |
std::set< SgVariableSymbol * > | write_variables_ |
Set of all SgVariableSymbol which are written in this segment. | |
bool | in_conflict_with_all_other_segments |
If there is any pointer or reference operations, this flag will be set. | |
Static Public Attributes | |
static int | id_counter = 0 |
This static counter will be used to generate id's for the individual segments. | |
Friends | |
std::ostream & | operator<< (std::ostream &out, const Segment &segment) |
typedef std::vector<SgNode*> risc::sg::Segment::Expressions |
risc::sg::Segment::Segment | ( | SgNode const *const | boundary_node | ) |
risc::sg::Segment::Segment | ( | const Segment & | other | ) |
void risc::sg::Segment::add_expression | ( | SgNode * | node | ) |
This function add the given node to the vector of expressions.
add_expression
void risc::sg::Segment::analyze_expression | ( | SgNode * | expression, | |
bool | left_of_assignment, | |||
bool | read_write, | |||
bool | member_access | |||
) |
This function analyzes recursively all read and write accesses in this expression.
analyze_expression
void risc::sg::Segment::analyze_segment | ( | ) |
This function determines which variable are read and written in this segment.
analyze_variable_accesses
void risc::sg::Segment::merge | ( | const Segment & | other | ) |
bool risc::sg::Segment::operator== | ( | const Segment & | other | ) |
If two segments are equal the return value is true.
operator==
std::ostream& operator<< | ( | std::ostream & | out, | |
const Segment & | segment | |||
) | [friend] |
SgNode const* const risc::sg::Segment::boundary_node_ |
This is the associated boundary of the segment.
boost::default_color_type risc::sg::Segment::color |
boost::default_color_type risc::sg::Segment::color_ |
This color is used for some boost algorithms.
std::set<SgNode*> risc::sg::Segment::conflicts_ |
This is the unique id of the segment.
int risc::sg::Segment::id_counter = 0 [static] |
This static counter will be used to generate id's for the individual segments.
If there is any pointer or reference operations, this flag will be set.
std::set<SgVariableSymbol*> risc::sg::Segment::read_variables_ |
Set of all SgVariableSymbol which are read in this segment.
std::set<SgVariableSymbol*> risc::sg::Segment::write_variables_ |
Set of all SgVariableSymbol which are written in this segment.