All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
data_conflict_table.h
Go to the documentation of this file.
1 #ifndef DATA_CONFLICT_TABLE_H_INCLUDED_
2 #define DATA_CONFLICT_TABLE_H_INCLUDED_
3 
4 #include<vector>
5 #include<utility>
6 
7 #include "rose.h"
8 
9 #include "segment_graph.h" // needed for VertexDescriptor
10 #include "conflict_table.h"
11 #include "mapped_variable.h" // needed for MappedVariable
12 #include "data_conflict_ast_attributes.h" //needed for DataConflictAstAttributes
13 
14 namespace risc {
15 
16 namespace sg {
17 
26 
27 public:
28 
33  SegmentGraph &graph,
34  PathInstanceMapper *path_instance_mapper,
35  bool debugging);
36 
41  virtual void determine_conflict_table();
42 
50  void
51  color_members_of_class(const MappedVariable &variable,
53 
62  bool check_members_of_class(const MappedVariable &mapped_variable,
64  std::set<Conflict> &conflicts);
65 
77  bool
79  Segment &first_seg,
80  Segment &second_seg,
81  int row, int column,
82  int inst_id_first, int inst_id_second,
83  bool dynamic_analysis);
84 
91  bool is_conflict_free_variable(SgVariableSymbol *symbol);
92 
99  void color_symbol(
100  const MappedVariable &variable, DataConflictAstAttributes::Status color);
101 };
102 
103 
104 }; // end of namesapce sg
105 
106 }; // end of namespace risc
107 
108 #endif /* DATA_CONFLICT_TABLE_H_INCLUDED_ */
109 
110 /* ex: set softtabstop=2 tabstop=2 shiftwidth=2 expandtab: */
This class represents a segment graph for a process.
Definition: segment_graph.h:79
Status
Definition: data_conflict_ast_attributes.h:36
virtual void determine_conflict_table()
This function determines conflicts among the segments.
Definition: data_conflict_table.cpp:64
void color_members_of_class(const MappedVariable &variable, DataConflictAstAttributes::Status color)
This function checks if the type of the given variable symbol is is a class or struct. If so, all the member variables which are not static will be set to the given color.
Definition: data_conflict_table.cpp:224
This class can be used as a lookup table between an instance id of a module or hierarchical channel a...
Definition: path_instance_mapper.h:13
void color_symbol(const MappedVariable &variable, DataConflictAstAttributes::Status color)
Colors the symbol with color and instance id. Also considers member variables.
Definition: data_conflict_table.cpp:924
bool check_members_of_class(const MappedVariable &mapped_variable, DataConflictAstAttributes::Status color, std::set< Conflict > &conflicts)
This function checks if the type of the given variable symbol is is a class or struct. If so, it will check if at least on member variable which is not static has the given color.
Definition: data_conflict_table.cpp:292
DataConflictTable(SegmentGraph &graph, PathInstanceMapper *path_instance_mapper, bool debugging)
Default constructor for the DataConflictTable.
Definition: data_conflict_table.cpp:29
bool is_conflict_free_variable(SgVariableSymbol *symbol)
This function returns true if the variable declaration of of the symbol &#39;symbol&#39; has a pragma stateme...
Definition: data_conflict_table.cpp:892
Definition: conflict_table.h:17
This class represents the data conflict table among the individual segments. Two segments have a conf...
Definition: data_conflict_table.h:25
This is a helper class to describe a variable in the design through the symbol and the instance id...
Definition: mapped_variable.h:22
bool data_conflict_between(Segment &first_seg, Segment &second_seg, int row, int column, int inst_id_first, int inst_id_second, bool dynamic_analysis)
This function checks if there is a read write conflict between two segments. The boolean flag defines...
Definition: data_conflict_table.cpp:386
Definition: segment.h:21