extern bool graphite_legal_transform (scop_p);
extern bool dependency_between_pbbs_p (poly_bb_p, poly_bb_p, int);
-typedef struct poly_dr_pair *poly_dr_pair_p;
+enum poly_dependence_kind {
+ unknown_dependence,
+ no_dependence,
+ has_dependence
+};
-typedef struct poly_dr_pair
-{
- /* Source polyhedral data reference of the dependence. */
- poly_dr_p source;
+/* Represents a Polyhedral Data Dependence Relation. */
- /* Sink data reference of the dependence. */
- poly_dr_p sink;
+typedef struct poly_ddr
+{
+ /* Source and sink data references of the dependence. */
+ poly_dr_p source, sink;
- /* Data dependence polyhedron descibing dependence
- between SOURCE and SINK data references. */
+ /* Data dependence polyhedron. */
ppl_Pointset_Powerset_C_Polyhedron_t ddp;
-}poly_dr_pair;
+ enum poly_dependence_kind kind;
+
+ /* True when the dependence relation is for the original scattering. */
+ bool original_scattering_p;
+
+} *poly_ddr_p;
-#define PDRP_SOURCE(PDRP) (PDR->source)
-#define PDRP_SINK(PDRP) (PDR->sink)
-#define PDRP_DDP(PDRP) (PDR->ddp)
+#define PDDR_SOURCE(PDDR) (PDDR->source)
+#define PDDR_SINK(PDDR) (PDDR->sink)
+#define PDDR_DDP(PDDR) (PDDR->ddp)
+#define PDDR_KIND(PDDR) (PDDR->kind)
+#define PDDR_ORIGINAL_SCATTERING_P(PDDR) (PDDR->original_scattering_p)
-extern int eq_poly_dr_pair_p (const void *, const void *);
-extern hashval_t hash_poly_dr_pair_p (const void *);
+extern int eq_poly_ddr_p (const void *, const void *);
+extern hashval_t hash_poly_ddr_p (const void *);
+extern void free_poly_ddr (void *);
+extern void dot_deps (scop_p);
+extern void dot_deps_stmt (scop_p);
+extern void print_pddr (FILE *, poly_ddr_p);
+extern void debug_pddr (poly_ddr_p);
#endif