xref: /csrg-svn/old/pcc/mip/ndu.h (revision 32810)
1*32810Sdonn /*	ndu.h	4.2	87/12/10	*/
218387Sralph 
318387Sralph /*
418387Sralph  * This file defines the basic tree node data structure for the PCC.
518387Sralph  */
618387Sralph 
718387Sralph union ndu {
818387Sralph 	struct {		/* interior node */
918387Sralph 		int	op;
1018387Sralph 		int	rall;
1118387Sralph 		TWORD	type;
1218387Sralph 		int	su;
1318387Sralph #ifndef FLEXNAMES
1418387Sralph 		char	name[NCHNAM];
1518387Sralph #else
1618387Sralph 		char	*name;
1718387Sralph 		int	stalign;
1818387Sralph #endif
1918387Sralph 		NODE	*left;
2018387Sralph 		NODE	*right;
2118387Sralph 	} in;
2218387Sralph 	struct {		/* terminal node */
2318387Sralph 		int	op;
2418387Sralph 		int	rall;
2518387Sralph 		TWORD	type;
2618387Sralph 		int	su;
2718387Sralph #ifndef FLEXNAMES
2818387Sralph 		char	name[NCHNAM];
2918387Sralph #else
3018387Sralph 		char	*name;
3118387Sralph 		int	stalign;
3218387Sralph #endif
3318387Sralph 		CONSZ	lval;
3418387Sralph 		int	rval;
3518387Sralph 	} tn;
3618387Sralph 	struct {		/* branch node */
3718387Sralph 		int	op;
3818387Sralph 		int	rall;
3918387Sralph 		TWORD	type;
4018387Sralph 		int	su;
4118387Sralph 		int	label;		/* for use with branching */
4218387Sralph 	} bn;
4318387Sralph 	struct {		/* structure node */
4418387Sralph 		int	op;
4518387Sralph 		int	rall;
4618387Sralph 		TWORD	type;
4718387Sralph 		int	su;
4818387Sralph 		int	stsize;		/* sizes of structure objects */
4918387Sralph 		int	stalign;	/* alignment of structure objects */
5018387Sralph 	} stn;
5118387Sralph 	struct {		/* front node */
5218387Sralph 		int	op;
5318387Sralph 		int	cdim;
5418387Sralph 		TWORD	type;
5518387Sralph 		int	csiz;
5618387Sralph 	} fn;
5718387Sralph 	/*
5818387Sralph 	 * This structure is used when a double precision
5918387Sralph 	 * floating point constant is being computed
6018387Sralph 	 */
6118387Sralph 	struct {			/* DCON node */
6218387Sralph 		int	op;
63*32810Sdonn 		int	cdim;
6418387Sralph 		TWORD	type;
6518387Sralph 		int	csiz;
6618387Sralph 		double	dval;
6718387Sralph 	} dpn;
6818387Sralph 	/*
6918387Sralph 	 * This structure is used when a single precision
7018387Sralph 	 * floating point constant is being computed
7118387Sralph 	 */
7218387Sralph 	struct {			/* FCON node */
7318387Sralph 		int	op;
74*32810Sdonn 		int	cdim;
7518387Sralph 		TWORD	type;
7618387Sralph 		int	csiz;
7718387Sralph 		float	fval;
7818387Sralph 	} fpn;
7918387Sralph };
80