Files
SAPFOR/projects/dvm/fdvm/trunk/Sage/h/bif.h
2025-03-25 21:09:12 +03:00

454 lines
7.9 KiB
C

/*********************************************************************/
/* pC++/Sage++ Copyright (C) 1993 */
/* Indiana University University of Oregon University of Rennes */
/*********************************************************************/
/************************************************************************
* *
* BIF NODES *
* *
************************************************************************/
struct bfnd {
int variant, id; /* variant and identification tags */
int index; /* used in the strongly con. comp. routines */
int g_line, l_line; /* global & local line numbers */
int decl_specs; /* declaration specifiers stored with
bif nodes: static, extern, friend, and inline */
PTR_LABEL label;
PTR_BFND thread;
PTR_FNAME filename; /* point to the source filename */
PTR_BFND control_parent; /* current bif node in on the control blob list
of control_parent */
PTR_PLNK prop_list; /* property list */
union bfnd_union {
struct {
PTR_BFND bf_ptr1; /* used by the parser and should */
PTR_CMNT cmnt_ptr; /* to attach comments */
PTR_SYMB symbol; /* a symbol table entry */
PTR_LLND ll_ptr1; /* an L-value expr tree */
PTR_LLND ll_ptr2; /* an R-value expr tree */
PTR_LLND ll_ptr3; /* a spare expr tree (see below) */
PTR_LABEL lbl_ptr; /* used by do */
PTR_BLOB bl_ptr1; /* a list of control dep subnodes */
PTR_BLOB bl_ptr2; /* another such list (for if stmt) */
PTR_DEP dep_ptr1; /* a list of dependences nodes */
PTR_DEP dep_ptr2; /* another list of dep nodes */
PTR_SETS sets; /* a list of sets like GEN, KILL etc */
} Template;
struct {
PTR_BFND proc_list; /* a list of procedures in this file */
PTR_CMNT cmnt_ptr;
PTR_SYMB list; /* list of global const and type */
PTR_LLND null_2;
PTR_LLND null_3;
PTR_LLND null_4;
PTR_LABEL null_5;
PTR_BLOB control; /* used for list of procedures */
PTR_BLOB null_6;
PTR_DEP null_7;
PTR_DEP null_8;
PTR_SETS null_9;
} Global;
struct {
PTR_BFND next_prog;
PTR_CMNT cmnt_ptr;
PTR_SYMB prog_symb;
PTR_LLND null_1;
PTR_LLND null_2;
PTR_LLND null_3;
PTR_LABEL null_4;
PTR_BLOB control;
PTR_BLOB format_group;
PTR_DEP null_5;
PTR_DEP null_6;
PTR_SETS null_7;
} program;
struct {
PTR_BFND next_proc;
PTR_CMNT cmnt_ptr;
PTR_SYMB proc_symb;
PTR_LLND null_1;
PTR_LLND null_2;
PTR_LLND null_3;
PTR_LABEL null_4;
PTR_BLOB control;
PTR_BLOB format_group;
PTR_DEP null_5;
PTR_DEP null_6;
PTR_SETS null_7;
} procedure;
struct {
PTR_BFND next_func;
PTR_CMNT cmnt_ptr;
PTR_SYMB func_symb;
PTR_LLND ftype;
PTR_LLND null_1;
PTR_LLND null_2;
PTR_LABEL null_3;
PTR_BLOB control;
PTR_BLOB format_group;
PTR_DEP null_4;
PTR_DEP null_5;
PTR_SETS null_6;
} function;
struct {
PTR_BFND next_bif;
PTR_CMNT cmnt_ptr;
PTR_SYMB null_1;
PTR_LLND null_2;
PTR_LLND null_3;
PTR_LLND null_4;
PTR_LABEL null_5;
PTR_BLOB control;
PTR_BLOB null_6;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} basic_block;
struct {
PTR_BFND next_stat;
PTR_CMNT cmnt_ptr;
PTR_SYMB null_1;
PTR_LLND null_2;
PTR_LLND null_3;
PTR_LLND null_4;
PTR_LABEL null_5;
PTR_BLOB null_6;
PTR_BLOB null_7;
PTR_DEP null_8;
PTR_DEP null_9;
PTR_SETS sets;
} control_end;
struct {
PTR_BFND true_branch;
PTR_CMNT cmnt_ptr;
PTR_SYMB null_1;
PTR_LLND condition;
PTR_LLND null_2;
PTR_LLND null_3;
PTR_LABEL null_4;
PTR_BLOB control_true;
PTR_BLOB control_false;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} if_node;
struct {
PTR_BFND true_branch;
PTR_CMNT cmnt_ptr;
PTR_SYMB null_1;
PTR_LLND condition;
PTR_LLND null_2;
PTR_LLND null_3;
PTR_LABEL null_4;
PTR_BLOB control_true;
PTR_BLOB control_false;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} where_node;
struct {
PTR_BFND loop_end;
PTR_CMNT cmnt_ptr;
PTR_SYMB null_1;
PTR_LLND null_2;
PTR_LLND null_3;
PTR_LLND null_4;
PTR_LABEL null_5;
PTR_BLOB control;
PTR_BLOB null_6;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} loop_node;
struct {
PTR_BFND for_end;
PTR_CMNT cmnt_ptr;
PTR_SYMB control_var;
PTR_LLND range;
PTR_LLND increment;
PTR_LLND where_cond;
PTR_LABEL doend;
PTR_BLOB control;
PTR_BLOB null_1;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} for_node;
struct {
PTR_BFND forall_end;
PTR_CMNT cmnt_ptr;
PTR_SYMB control_var;
PTR_LLND range;
PTR_LLND increment;
PTR_LLND where_cond;
PTR_LABEL null_1;
PTR_BLOB control;
PTR_BLOB null_2;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} forall_nd;
struct {
PTR_BFND alldo_end;
PTR_CMNT cmnt_ptr;
PTR_SYMB control_var;
PTR_LLND range;
PTR_LLND increment;
PTR_LLND null_0;
PTR_LABEL null_1;
PTR_BLOB control;
PTR_BLOB null_2;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} alldo_nd;
struct {
PTR_BFND while_end;
PTR_CMNT cmnt_ptr;
PTR_SYMB null_1;
PTR_LLND condition;
PTR_LLND null_2;
PTR_LLND null_3;
PTR_LABEL null_4;
PTR_BLOB control;
PTR_BLOB null_5;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} while_node;
struct {
PTR_BFND next_stat;
PTR_CMNT cmnt_ptr;
PTR_SYMB null_1;
PTR_LLND condition;
PTR_LLND null_2;
PTR_LLND null_3;
PTR_LABEL null_4;
PTR_BLOB control_true;
PTR_BLOB control_false;
PTR_DEP null_5;
PTR_DEP null_6;
PTR_SETS sets;
} exit_node;
struct {
PTR_BFND next_stat;
PTR_CMNT cmnt_ptr;
PTR_SYMB null_1;
PTR_LLND l_value;
PTR_LLND r_value;
PTR_LLND null_2;
PTR_LABEL null_3;
PTR_BLOB null_4;
PTR_BLOB null_5;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} assign;
struct {
PTR_BFND next_stat;
PTR_CMNT cmnt_ptr;
PTR_SYMB null_1;
PTR_LLND l_value;
PTR_LLND r_value;
PTR_LLND null_2;
PTR_LABEL null_3;
PTR_BLOB null_4;
PTR_BLOB null_5;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} identify;
struct {
PTR_BFND next_stat;
PTR_CMNT cmnt_ptr;
PTR_SYMB null_1;
PTR_LLND spec_string;
PTR_LLND null_2;
PTR_LLND null_3;
PTR_LABEL null_4;
PTR_BLOB null_5;
PTR_BLOB null_6;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} format;
struct {
PTR_BFND next_stat;
PTR_CMNT cmnt_ptr;
PTR_SYMB null_1;
PTR_LLND format; /* used by blaze only */
PTR_LLND expr_list;
PTR_LLND control_list; /* used by cedar fortan only */
PTR_LABEL null_2;
PTR_BLOB null_3;
PTR_BLOB null_4;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} write_stat;
struct {
PTR_BFND next_stat;
PTR_CMNT cmnt_ptr;
PTR_SYMB null_1;
PTR_LLND format; /* used by blaze only */
PTR_LLND var_list;
PTR_LLND control_list; /* used by cedar fortran */
PTR_LABEL null_2;
PTR_BLOB null_3;
PTR_BLOB null_4;
PTR_DEP dep_from;
PTR_DEP dep_to;
PTR_SETS sets;
} read_stat;
} entry;
};
#define __BIF_DEF__