118 lines
3.4 KiB
C
118 lines
3.4 KiB
C
|
|
/*********************************************************************/
|
||
|
|
/* pC++/Sage++ Copyright (C) 1993 */
|
||
|
|
/* Indiana University University of Oregon University of Rennes */
|
||
|
|
/*********************************************************************/
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
/* declaration for the dependencies computation and use in the toolbox */
|
||
|
|
|
||
|
|
/* on declare de macro d'acces aux dependence de donnee */
|
||
|
|
|
||
|
|
#define BIF_DEP_STRUCT1(NODE) ((NODE)->entry.Template.dep_ptr1)
|
||
|
|
#define BIF_DEP_STRUCT2(NODE) ((NODE)->entry.Template.dep_ptr2)
|
||
|
|
|
||
|
|
#define FIRST_DEP_IN_PROJ(X) ((X)->head_dep)
|
||
|
|
/* decription d'une dependance */
|
||
|
|
|
||
|
|
#define DEP_ID(DEP) ((DEP)->id)
|
||
|
|
#define DEP_NEXT(DEP) ((DEP)->thread)
|
||
|
|
#define DEP_TYPE(DEP) ((DEP)->type)
|
||
|
|
#define DEP_DIRECTION(DEP) ((DEP)->direct)
|
||
|
|
#define DEP_SYMB(DEP) ((DEP)->symbol)
|
||
|
|
#define DEP_FROM_BIF(DEP) (((DEP)->from).stmt)
|
||
|
|
#define DEP_FROM_LL(DEP) (((DEP)->from).refer)
|
||
|
|
#define DEP_TO_BIF(DEP) (((DEP)->to).stmt)
|
||
|
|
#define DEP_TO_LL(DEP) (((DEP)->to).refer)
|
||
|
|
#define DEP_FROM_FWD(DEP) ((DEP)->from_fwd)
|
||
|
|
#define DEP_FROM_BACK(DEP) ((DEP)->from_back)
|
||
|
|
#define DEP_TO_FWD(DEP) ((DEP)->to_fwd)
|
||
|
|
#define DEP_TO_BACK(DEP) ((DEP)->to_back)
|
||
|
|
|
||
|
|
|
||
|
|
/* la forme normale de dependence de donnee est le vecteur de direction */
|
||
|
|
|
||
|
|
/* on rappel temporairement la forme des dep (sets.h)
|
||
|
|
struct dep { data dependencies
|
||
|
|
|
||
|
|
int id; identification for reading/writing
|
||
|
|
PTR_DEP thread;
|
||
|
|
|
||
|
|
char type; flow-, output-, or anti-dependence
|
||
|
|
char direct[MAX_DEP]; direction/distance vector
|
||
|
|
|
||
|
|
PTR_SYMB symbol; symbol table entry
|
||
|
|
struct ref from; tail of dependence
|
||
|
|
struct ref to; head of dependence
|
||
|
|
|
||
|
|
PTR_DEP from_fwd, from_back; list of dependencies going to tail
|
||
|
|
PTR_DEP to_fwd, to_back; list of dependencies going to head
|
||
|
|
|
||
|
|
} ;
|
||
|
|
|
||
|
|
*/
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
/* pour la gestion memoire */
|
||
|
|
struct chaining
|
||
|
|
{
|
||
|
|
char *zone;
|
||
|
|
struct chaining *list;
|
||
|
|
};
|
||
|
|
|
||
|
|
typedef struct chaining *ptchaining;
|
||
|
|
|
||
|
|
|
||
|
|
struct stack_chaining
|
||
|
|
{
|
||
|
|
ptchaining first;
|
||
|
|
ptchaining last;
|
||
|
|
struct stack_chaining *prev;
|
||
|
|
struct stack_chaining *next;
|
||
|
|
int level;
|
||
|
|
};
|
||
|
|
|
||
|
|
typedef struct stack_chaining *ptstack_chaining;
|
||
|
|
|
||
|
|
/* structure pour les graphes de dependence */
|
||
|
|
#define MAXSUC 100
|
||
|
|
|
||
|
|
struct graph
|
||
|
|
{
|
||
|
|
int id; /* identificateur */
|
||
|
|
int linenum;
|
||
|
|
int mark;
|
||
|
|
int order;
|
||
|
|
PTR_BFND stmt;
|
||
|
|
PTR_LLND expr;
|
||
|
|
PTR_LLND from_expr[MAXSUC];
|
||
|
|
PTR_LLND to_expr[MAXSUC];
|
||
|
|
PTR_DEP dep_struct[MAXSUC];
|
||
|
|
char *dep_vect[MAXSUC];
|
||
|
|
char type[MAXSUC];
|
||
|
|
struct graph *suc[MAXSUC]; /* next */
|
||
|
|
struct graph *pred[MAXSUC]; /* next */
|
||
|
|
struct graph *list; /* chaine les noeuds d'un graphe */
|
||
|
|
};
|
||
|
|
|
||
|
|
typedef struct graph *PTR_GRAPH;
|
||
|
|
|
||
|
|
#define CHAIN_LIST(NODE) ((NODE)->list)
|
||
|
|
#define GRAPH_ID(NODE) ((NODE)->id)
|
||
|
|
#define GRAPH_ORDER(NODE) ((NODE)->order)
|
||
|
|
#define GRAPH_MARK(NODE) ((NODE)->mark)
|
||
|
|
#define GRAPH_LINE(NODE) ((NODE)->linenum)
|
||
|
|
#define GRAPH_BIF(NODE) ((NODE)->stmt)
|
||
|
|
#define GRAPH_LL(NODE) ((NODE)->expr)
|
||
|
|
#define GRAPH_DEP(NODE) (((NODE)->dep_struct))
|
||
|
|
#define GRAPH_VECT(NODE) (((NODE)->dep_vect))
|
||
|
|
#define GRAPH_TYPE(NODE) ((NODE)->type)
|
||
|
|
#define GRAPH_SUC(NODE) (((NODE)->suc))
|
||
|
|
#define GRAPH_PRED(NODE) (((NODE)->pred))
|
||
|
|
#define GRAPH_LL_FROM(NODE) (((NODE)->from_expr))
|
||
|
|
#define GRAPH_LL_TO(NODE) (((NODE)->to_expr))
|
||
|
|
|
||
|
|
|
||
|
|
#define NOT_ORDERED -1
|