/************************************************************************/
/*                                                                      */
/* Copyright (c) 1988 -                                                 */
/*     The Rector and Visitors of the University of Virginia            */
/*                                                                      */
/* This code may not be distributed further without permission          */
/*      from the University of Virginia.                                */
/* This code is distributed WITHOUT ANY WARRANTY.  No claims are        */
/*      made as to whether it serves any particular purpose or even     */
/*      works at all.                                                   */
/*                                                                      */
/************************************************************************/

/*
 * expression tree opcodes.  Many operators are represented by their
 * corresponding input symbols, eg, addition is SY_PLUS.
 */

#define ND_ABS	70
#define ND_ADDRESS	71
#define ND_CALL	72
#define ND_CBRANCH	73
#define ND_DEREF	74
#define ND_FREE	75
#define ND_ICON	76
#define ND_JMPEQ	77
#define ND_JMPGE	78
#define ND_JMPGT	79
#define ND_JMPLE	80
#define ND_JMPLT	81
#define ND_JMPNE	82
#define ND_LSHIFT	83
#define ND_ODD	84
#define ND_PCONV	85
#define ND_RANGE	86
#define ND_ROUND	87
#define ND_RTFUNC	88
#define ND_SCONV	89
#define ND_SQR	90
#define ND_STARG	91
#define ND_STASG	92
#define ND_TRUNC	93
#define ND_UMINUS	94

#define ND_LEAF(o) ((o) == ND_ADDRESS || (o) == SY_LABEL || \
	(o) == ND_ICON || (o) == ND_RTFUNC)

/*
 * storage classes. 
 * For interfacing with a debugger like sdb or dbx, these storage classes
 * must correspond to those used by the C compiler.
 */

#define SC_NULL 0		/* constants */
#define SC_AUTO 1		/* local variables */
#define SC_EXTERN 2
#define SC_STATIC 3
#define SC_REGISTER 4
#define SC_EXTDEF 5		/* subprograms and global variables */
#define SC_LABEL 6		/* labels */
#define SC_ULABEL 7
#define SC_MOS 8		/* record fields ("member of struct" in C) */
#define SC_PARAM 9		/* parameters */
#define SC_STNAME 10
#define SC_MOU 11
#define SC_UNAME 12
#define SC_TYPEDEF 13
#define SC_FORTRAN 14
#define SC_ENAME 15
#define SC_MOE 16
#define SC_UFORTRAN 17
#define SC_USTATIC 18

/*
 * location counters
 */

#define SG_PROG 0
#define SG_DATA 1
#define SG_ADATA 2
#define SG_STRNG 3
#define SG_ISTRNG 4
#define SG_STAB 5

extern NODE
	*ck_range(),
	*ck_subrange(),
	*ck_value(),
	*nd_address(),
	*nd_alloc(),
	*nd_build(),
	*nd_const(),
	*nd_icon(),
	*nd_label(),
	*nd_optim1(),
	*nd_optim2(),
	*nd_runtime(),
	*nd_value(),
	*p_passbound(),
	*p_parameter(),
	*p_ap_list(),
	*p_typesize()
;
