diff options
author | Sebastian Pop <sebpop@gmail.com> | 2007-07-23 22:30:38 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2007-07-23 22:30:38 +0000 |
commit | 3a796c6fc089ab1d0db461a0c102d6d823cff34a (patch) | |
tree | 26eb49b8909738f80720418d1592ee732c4f16b5 /gcc/tree-data-ref.h | |
parent | 5ab0eadfa39b7f79ae5f3e7d6dc7dad259522504 (diff) | |
download | gcc-3a796c6fc089ab1d0db461a0c102d6d823cff34a.tar.gz |
tree-data-ref.c (find_vertex_for_stmt, [...]): New.
* tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
stmts_from_loop, known_dependences_p, build_rdg): New.
* tree-data-ref.h: Depends on graphds.h.
(rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
(build_rdg): Declared.
* Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
From-SVN: r126859
Diffstat (limited to 'gcc/tree-data-ref.h')
-rw-r--r-- | gcc/tree-data-ref.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/tree-data-ref.h b/gcc/tree-data-ref.h index 0c04c4bf77d..b5a66404e12 100644 --- a/gcc/tree-data-ref.h +++ b/gcc/tree-data-ref.h @@ -22,6 +22,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #ifndef GCC_TREE_DATA_REF_H #define GCC_TREE_DATA_REF_H +#include "graphds.h" #include "lambda.h" #include "omega.h" @@ -329,6 +330,46 @@ bool find_loop_nest (struct loop *, VEC (loop_p, heap) **); void compute_all_dependences (VEC (data_reference_p, heap) *, VEC (ddr_p, heap) **, VEC (loop_p, heap) *, bool); + + +/* A RDG vertex representing a statement. */ +typedef struct rdg_vertex +{ + /* The statement represented by this vertex. */ + tree stmt; +} *rdg_vertex_p; + +#define RDGV_STMT(V) ((struct rdg_vertex *) ((V)->data))->stmt + +/* Data dependence type. */ + +enum rdg_dep_type +{ + /* Read After Write (RAW). */ + flow_dd = 'f', + + /* Write After Read (WAR). */ + anti_dd = 'a', + + /* Write After Write (WAW). */ + output_dd = 'o', + + /* Read After Read (RAR). */ + input_dd = 'i' +}; + +/* Dependence information attached to an edge of the RDG. */ + +typedef struct rdg_edge +{ + /* Type of the dependence. */ + enum rdg_dep_type type; +} *rdg_edge_p; + +#define RDGE_TYPE(E) ((struct rdg_edge *) ((E)->data))->type + +struct graph *build_rdg (struct loop *); + /* Return the index of the variable VAR in the LOOP_NEST array. */ static inline int |