132 lines
3.6 KiB
C
132 lines
3.6 KiB
C
|
|
/*********************************************************************/
|
||
|
|
/* pC++/Sage++ Copyright (C) 1993 */
|
||
|
|
/* Indiana University University of Oregon University of Rennes */
|
||
|
|
/*********************************************************************/
|
||
|
|
|
||
|
|
#include "tag"
|
||
|
|
|
||
|
|
#define hashMax 1007 /*max hash table size */
|
||
|
|
|
||
|
|
/**************** variant tags for dependence nodes *********************/
|
||
|
|
|
||
|
|
#define DEP_DIR 0200 /* direction vector information only */
|
||
|
|
#define DEP_DIST 0000 /* direction and distance vector */
|
||
|
|
|
||
|
|
#define NO_ALL_ST_DEP 0010 /* no all statiionary dir for this pair of statements */
|
||
|
|
#define DEP_CROSS 0100 /* dependence MUST wrap around loop */
|
||
|
|
#define DEP_UNCROSS 0000 /* dependence MAY not wrap around loop */
|
||
|
|
|
||
|
|
#define DEP_FLOW 0
|
||
|
|
#define DEP_ANTI 1
|
||
|
|
#define DEP_OUTPUT 2
|
||
|
|
|
||
|
|
/************************************************************************/
|
||
|
|
|
||
|
|
typedef struct bfnd *PTR_BFND;
|
||
|
|
typedef struct llnd *PTR_LLND;
|
||
|
|
typedef struct blob *PTR_BLOB;
|
||
|
|
//typedef struct string *PTR_STRING;
|
||
|
|
typedef struct symb *PTR_SYMB;
|
||
|
|
typedef struct hash_entry *PTR_HASH;
|
||
|
|
typedef struct data_type *PTR_TYPE;
|
||
|
|
typedef struct dep *PTR_DEP;
|
||
|
|
typedef struct sets *PTR_SETS;
|
||
|
|
typedef struct def *PTR_DEF;
|
||
|
|
typedef struct deflst *PTR_DEFLST;
|
||
|
|
typedef struct Label *PTR_LABEL;
|
||
|
|
typedef struct cmnt *PTR_CMNT;
|
||
|
|
typedef struct file_name *PTR_FNAME;
|
||
|
|
typedef struct prop_link *PTR_PLNK;
|
||
|
|
|
||
|
|
struct blob {
|
||
|
|
PTR_BFND ref;
|
||
|
|
PTR_BLOB next;
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
struct Label {
|
||
|
|
int id; /* identification tag */
|
||
|
|
PTR_BFND scope; /* level at which ident is declared */
|
||
|
|
PTR_BLOB ud_chain; /* use-definition chain */
|
||
|
|
unsigned labused :1; /* if it's been referenced */
|
||
|
|
unsigned labinacc:1; /* illegal use of this label */
|
||
|
|
unsigned labdefined:1; /* if this label been defined */
|
||
|
|
unsigned labtype:2; /* UNKNOWN, EXEC, FORMAT, and OTHER */
|
||
|
|
long stateno; /* statement label */
|
||
|
|
PTR_LABEL next; /* point to next label entry */
|
||
|
|
PTR_BFND statbody; /* point to body of statement */
|
||
|
|
PTR_SYMB label_name; /* label name for VPC++ */
|
||
|
|
/* The variant will be LABEL_NAME */
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
struct Ctlframe {
|
||
|
|
int ctltype; /* type of control frame */
|
||
|
|
int level; /* block level */
|
||
|
|
int dolabel; /* DO loop's end label */
|
||
|
|
PTR_SYMB donamep; /* DO loop's control variable name */
|
||
|
|
PTR_SYMB block_list; /* start of local decl */
|
||
|
|
PTR_SYMB block_end; /* end of local decl */
|
||
|
|
PTR_BFND loop_hedr; /* save the current loop header */
|
||
|
|
PTR_BFND header; /* header of the block */
|
||
|
|
PTR_BFND topif; /* keep track of if header */
|
||
|
|
struct Ctlframe *next; /* thread */
|
||
|
|
};
|
||
|
|
|
||
|
|
struct cmnt {
|
||
|
|
int id;
|
||
|
|
int type;
|
||
|
|
int counter; /* New Added for VPC++ */
|
||
|
|
char* string;
|
||
|
|
struct cmnt *next;
|
||
|
|
struct cmnt *thread;
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
struct file_name { /* for keep source filenames in the project */
|
||
|
|
int id;
|
||
|
|
char *name;
|
||
|
|
PTR_FNAME next;
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
#define NO 0
|
||
|
|
#define YES 1
|
||
|
|
#ifndef FALSE
|
||
|
|
# define FALSE 0
|
||
|
|
#endif
|
||
|
|
#ifndef TRUE
|
||
|
|
# define TRUE 1
|
||
|
|
#endif
|
||
|
|
#define BOOL int
|
||
|
|
#define EOL -1
|
||
|
|
#define SAME_GROUP 0
|
||
|
|
#define NEW_GROUP1 1
|
||
|
|
#define NEW_GROUP2 2
|
||
|
|
#define FULL 0
|
||
|
|
#define HALF 1
|
||
|
|
|
||
|
|
#define DEFINITE 1
|
||
|
|
#define DEFINITE_SAME 7
|
||
|
|
#define DEFINITE_DIFFER 0
|
||
|
|
#define FIRST_LARGER 2
|
||
|
|
#define SECOND_LARGER 4
|
||
|
|
|
||
|
|
|
||
|
|
/*
|
||
|
|
* Tags for various languages
|
||
|
|
*/
|
||
|
|
#define ForSrc 0 /* This is a Fortran program */
|
||
|
|
#define CSrc 1 /* This is a C program */
|
||
|
|
#define BlaSrc 2 /* This is a Blaze program */
|
||
|
|
|
||
|
|
|
||
|
|
#define BFNULL (PTR_BFND) 0
|
||
|
|
#define LLNULL (PTR_LLND) 0
|
||
|
|
#define BLNULL (PTR_BLOB) 0
|
||
|
|
#define SMNULL (PTR_SYMB) 0
|
||
|
|
#define HSNULL (PTR_HASH) 0
|
||
|
|
#define TYNULL (PTR_TYPE) 0
|
||
|
|
#define LBNULL (PTR_LABEL)0
|
||
|
|
#define CMNULL (PTR_CMNT)0
|