xref: /csrg-svn/old/pcc/mip/ndu.h (revision 18387)
1*18387Sralph /*	ndu.h	4.1	85/03/19	*/
2*18387Sralph 
3*18387Sralph /*
4*18387Sralph  * This file defines the basic tree node data structure for the PCC.
5*18387Sralph  */
6*18387Sralph 
7*18387Sralph union ndu {
8*18387Sralph 	struct {		/* interior node */
9*18387Sralph 		int	op;
10*18387Sralph 		int	rall;
11*18387Sralph 		TWORD	type;
12*18387Sralph 		int	su;
13*18387Sralph #ifndef FLEXNAMES
14*18387Sralph 		char	name[NCHNAM];
15*18387Sralph #else
16*18387Sralph 		char	*name;
17*18387Sralph 		int	stalign;
18*18387Sralph #endif
19*18387Sralph 		NODE	*left;
20*18387Sralph 		NODE	*right;
21*18387Sralph 	} in;
22*18387Sralph 	struct {		/* terminal node */
23*18387Sralph 		int	op;
24*18387Sralph 		int	rall;
25*18387Sralph 		TWORD	type;
26*18387Sralph 		int	su;
27*18387Sralph #ifndef FLEXNAMES
28*18387Sralph 		char	name[NCHNAM];
29*18387Sralph #else
30*18387Sralph 		char	*name;
31*18387Sralph 		int	stalign;
32*18387Sralph #endif
33*18387Sralph 		CONSZ	lval;
34*18387Sralph 		int	rval;
35*18387Sralph 	} tn;
36*18387Sralph 	struct {		/* branch node */
37*18387Sralph 		int	op;
38*18387Sralph 		int	rall;
39*18387Sralph 		TWORD	type;
40*18387Sralph 		int	su;
41*18387Sralph 		int	label;		/* for use with branching */
42*18387Sralph 	} bn;
43*18387Sralph 	struct {		/* structure node */
44*18387Sralph 		int	op;
45*18387Sralph 		int	rall;
46*18387Sralph 		TWORD	type;
47*18387Sralph 		int	su;
48*18387Sralph 		int	stsize;		/* sizes of structure objects */
49*18387Sralph 		int	stalign;	/* alignment of structure objects */
50*18387Sralph 	} stn;
51*18387Sralph 	struct {		/* front node */
52*18387Sralph 		int	op;
53*18387Sralph 		int	cdim;
54*18387Sralph 		TWORD	type;
55*18387Sralph 		int	csiz;
56*18387Sralph 	} fn;
57*18387Sralph 	/*
58*18387Sralph 	 * This structure is used when a double precision
59*18387Sralph 	 * floating point constant is being computed
60*18387Sralph 	 */
61*18387Sralph 	struct {			/* DCON node */
62*18387Sralph 		int	op;
63*18387Sralph 		TWORD	type;
64*18387Sralph 		int	cdim;
65*18387Sralph 		int	csiz;
66*18387Sralph 		double	dval;
67*18387Sralph 	} dpn;
68*18387Sralph 	/*
69*18387Sralph 	 * This structure is used when a single precision
70*18387Sralph 	 * floating point constant is being computed
71*18387Sralph 	 */
72*18387Sralph 	struct {			/* FCON node */
73*18387Sralph 		int	op;
74*18387Sralph 		TWORD	type;
75*18387Sralph 		int	cdim;
76*18387Sralph 		int	csiz;
77*18387Sralph 		float	fval;
78*18387Sralph 	} fpn;
79*18387Sralph };
80