xref: /openbsd-src/gnu/usr.bin/gcc/gcc/f/bld.h (revision c87b03e512fc05ed6e0222f6fb0ae86264b1d05b)
1*c87b03e5Sespie /* bld.h -- Public #include File (module.h template V1.0)
2*c87b03e5Sespie    Copyright (C) 1995, 1996 Free Software Foundation, Inc.
3*c87b03e5Sespie    Contributed by James Craig Burley.
4*c87b03e5Sespie 
5*c87b03e5Sespie This file is part of GNU Fortran.
6*c87b03e5Sespie 
7*c87b03e5Sespie GNU Fortran is free software; you can redistribute it and/or modify
8*c87b03e5Sespie it under the terms of the GNU General Public License as published by
9*c87b03e5Sespie the Free Software Foundation; either version 2, or (at your option)
10*c87b03e5Sespie any later version.
11*c87b03e5Sespie 
12*c87b03e5Sespie GNU Fortran is distributed in the hope that it will be useful,
13*c87b03e5Sespie but WITHOUT ANY WARRANTY; without even the implied warranty of
14*c87b03e5Sespie MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*c87b03e5Sespie GNU General Public License for more details.
16*c87b03e5Sespie 
17*c87b03e5Sespie You should have received a copy of the GNU General Public License
18*c87b03e5Sespie along with GNU Fortran; see the file COPYING.  If not, write to
19*c87b03e5Sespie the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20*c87b03e5Sespie 02111-1307, USA.
21*c87b03e5Sespie 
22*c87b03e5Sespie    Owning Modules:
23*c87b03e5Sespie       bld.c
24*c87b03e5Sespie 
25*c87b03e5Sespie    Modifications:
26*c87b03e5Sespie */
27*c87b03e5Sespie 
28*c87b03e5Sespie /* Allow multiple inclusion to work. */
29*c87b03e5Sespie 
30*c87b03e5Sespie #ifndef GCC_F_BLD_H
31*c87b03e5Sespie #define GCC_F_BLD_H
32*c87b03e5Sespie 
33*c87b03e5Sespie /* Simple definitions and enumerations. */
34*c87b03e5Sespie 
35*c87b03e5Sespie typedef enum
36*c87b03e5Sespie   {
37*c87b03e5Sespie     FFEBLD_constNONE,
38*c87b03e5Sespie     FFEBLD_constINTEGER1,
39*c87b03e5Sespie     FFEBLD_constINTEGER2,
40*c87b03e5Sespie     FFEBLD_constINTEGER3,
41*c87b03e5Sespie     FFEBLD_constINTEGER4,
42*c87b03e5Sespie     FFEBLD_constINTEGER5,
43*c87b03e5Sespie     FFEBLD_constINTEGER6,
44*c87b03e5Sespie     FFEBLD_constINTEGER7,
45*c87b03e5Sespie     FFEBLD_constINTEGER8,
46*c87b03e5Sespie     FFEBLD_constLOGICAL1,
47*c87b03e5Sespie     FFEBLD_constLOGICAL2,
48*c87b03e5Sespie     FFEBLD_constLOGICAL3,
49*c87b03e5Sespie     FFEBLD_constLOGICAL4,
50*c87b03e5Sespie     FFEBLD_constLOGICAL5,
51*c87b03e5Sespie     FFEBLD_constLOGICAL6,
52*c87b03e5Sespie     FFEBLD_constLOGICAL7,
53*c87b03e5Sespie     FFEBLD_constLOGICAL8,
54*c87b03e5Sespie     FFEBLD_constREAL1,
55*c87b03e5Sespie     FFEBLD_constREAL2,
56*c87b03e5Sespie     FFEBLD_constREAL3,
57*c87b03e5Sespie     FFEBLD_constREAL4,
58*c87b03e5Sespie     FFEBLD_constREAL5,
59*c87b03e5Sespie     FFEBLD_constREAL6,
60*c87b03e5Sespie     FFEBLD_constREAL7,
61*c87b03e5Sespie     FFEBLD_constREAL8,
62*c87b03e5Sespie     FFEBLD_constCOMPLEX1,
63*c87b03e5Sespie     FFEBLD_constCOMPLEX2,
64*c87b03e5Sespie     FFEBLD_constCOMPLEX3,
65*c87b03e5Sespie     FFEBLD_constCOMPLEX4,
66*c87b03e5Sespie     FFEBLD_constCOMPLEX5,
67*c87b03e5Sespie     FFEBLD_constCOMPLEX6,
68*c87b03e5Sespie     FFEBLD_constCOMPLEX7,
69*c87b03e5Sespie     FFEBLD_constCOMPLEX8,
70*c87b03e5Sespie     FFEBLD_constCHARACTER1,
71*c87b03e5Sespie     FFEBLD_constCHARACTER2,
72*c87b03e5Sespie     FFEBLD_constCHARACTER3,
73*c87b03e5Sespie     FFEBLD_constCHARACTER4,
74*c87b03e5Sespie     FFEBLD_constCHARACTER5,
75*c87b03e5Sespie     FFEBLD_constCHARACTER6,
76*c87b03e5Sespie     FFEBLD_constCHARACTER7,
77*c87b03e5Sespie     FFEBLD_constCHARACTER8,
78*c87b03e5Sespie     FFEBLD_constHOLLERITH,
79*c87b03e5Sespie     FFEBLD_constTYPELESS_FIRST,
80*c87b03e5Sespie     FFEBLD_constBINARY_MIL = FFEBLD_constTYPELESS_FIRST,
81*c87b03e5Sespie     FFEBLD_constBINARY_VXT,
82*c87b03e5Sespie     FFEBLD_constOCTAL_MIL,
83*c87b03e5Sespie     FFEBLD_constOCTAL_VXT,
84*c87b03e5Sespie     FFEBLD_constHEX_X_MIL,
85*c87b03e5Sespie     FFEBLD_constHEX_X_VXT,
86*c87b03e5Sespie     FFEBLD_constHEX_Z_MIL,
87*c87b03e5Sespie     FFEBLD_constHEX_Z_VXT,
88*c87b03e5Sespie     FFEBLD_constTYPELESS_LAST = FFEBLD_constHEX_Z_VXT,
89*c87b03e5Sespie     FFEBLD_const
90*c87b03e5Sespie   } ffebldConst;
91*c87b03e5Sespie 
92*c87b03e5Sespie typedef enum
93*c87b03e5Sespie   {
94*c87b03e5Sespie #define FFEBLD_OP(KWD,NAME,ARITY) KWD,
95*c87b03e5Sespie #include "bld-op.def"
96*c87b03e5Sespie #undef FFEBLD_OP
97*c87b03e5Sespie     FFEBLD_op
98*c87b03e5Sespie   } ffebldOp;
99*c87b03e5Sespie 
100*c87b03e5Sespie /* Typedefs. */
101*c87b03e5Sespie 
102*c87b03e5Sespie typedef struct _ffebld_ *ffebld;
103*c87b03e5Sespie typedef unsigned char ffebldArity;
104*c87b03e5Sespie typedef union _ffebld_constant_array_ ffebldConstantArray;
105*c87b03e5Sespie typedef struct _ffebld_constant_ *ffebldConstant;
106*c87b03e5Sespie typedef union _ffebld_constant_union_ ffebldConstantUnion;
107*c87b03e5Sespie typedef ffebld *ffebldListBottom;
108*c87b03e5Sespie typedef unsigned int ffebldListLength;
109*c87b03e5Sespie #define ffebldListLength_f ""
110*c87b03e5Sespie typedef struct _ffebld_pool_stack_ *ffebldPoolstack_;
111*c87b03e5Sespie 
112*c87b03e5Sespie /* Include files needed by this one. */
113*c87b03e5Sespie 
114*c87b03e5Sespie #include "bit.h"
115*c87b03e5Sespie #include "com.h"
116*c87b03e5Sespie #include "info.h"
117*c87b03e5Sespie #include "intrin.h"
118*c87b03e5Sespie #include "lab.h"
119*c87b03e5Sespie #include "lex.h"
120*c87b03e5Sespie #include "malloc.h"
121*c87b03e5Sespie #include "symbol.h"
122*c87b03e5Sespie #include "target.h"
123*c87b03e5Sespie 
124*c87b03e5Sespie #define FFEBLD_whereconstPROGUNIT_ 1
125*c87b03e5Sespie #define FFEBLD_whereconstFILE_ 2
126*c87b03e5Sespie 
127*c87b03e5Sespie #define FFEBLD_whereconstCURRENT_ FFEBLD_whereconstFILE_
128*c87b03e5Sespie 
129*c87b03e5Sespie /* Structure definitions. */
130*c87b03e5Sespie 
131*c87b03e5Sespie #define FFEBLD_constINTEGERDEFAULT FFEBLD_constINTEGER1
132*c87b03e5Sespie #define FFEBLD_constLOGICALDEFAULT FFEBLD_constLOGICAL1
133*c87b03e5Sespie #define FFEBLD_constREALDEFAULT FFEBLD_constREAL1
134*c87b03e5Sespie #define FFEBLD_constREALDOUBLE FFEBLD_constREAL2
135*c87b03e5Sespie #define FFEBLD_constREALQUAD FFEBLD_constREAL3
136*c87b03e5Sespie #define FFEBLD_constCOMPLEX FFEBLD_constCOMPLEX1
137*c87b03e5Sespie #define FFEBLD_constCOMPLEXDOUBLE FFEBLD_constCOMPLEX2
138*c87b03e5Sespie #define FFEBLD_constCOMPLEXQUAD FFEBLD_constCOMPLEX3
139*c87b03e5Sespie #define FFEBLD_constCHARACTERDEFAULT FFEBLD_constCHARACTER1
140*c87b03e5Sespie 
141*c87b03e5Sespie union _ffebld_constant_union_
142*c87b03e5Sespie   {
143*c87b03e5Sespie     ffetargetTypeless typeless;
144*c87b03e5Sespie     ffetargetHollerith hollerith;
145*c87b03e5Sespie #if FFETARGET_okINTEGER1
146*c87b03e5Sespie     ffetargetInteger1 integer1;
147*c87b03e5Sespie #endif
148*c87b03e5Sespie #if FFETARGET_okINTEGER2
149*c87b03e5Sespie     ffetargetInteger2 integer2;
150*c87b03e5Sespie #endif
151*c87b03e5Sespie #if FFETARGET_okINTEGER3
152*c87b03e5Sespie     ffetargetInteger3 integer3;
153*c87b03e5Sespie #endif
154*c87b03e5Sespie #if FFETARGET_okINTEGER4
155*c87b03e5Sespie     ffetargetInteger4 integer4;
156*c87b03e5Sespie #endif
157*c87b03e5Sespie #if FFETARGET_okINTEGER5
158*c87b03e5Sespie     ffetargetInteger5 integer5;
159*c87b03e5Sespie #endif
160*c87b03e5Sespie #if FFETARGET_okINTEGER6
161*c87b03e5Sespie     ffetargetInteger6 integer6;
162*c87b03e5Sespie #endif
163*c87b03e5Sespie #if FFETARGET_okINTEGER7
164*c87b03e5Sespie     ffetargetInteger7 integer7;
165*c87b03e5Sespie #endif
166*c87b03e5Sespie #if FFETARGET_okINTEGER8
167*c87b03e5Sespie     ffetargetInteger8 integer8;
168*c87b03e5Sespie #endif
169*c87b03e5Sespie #if FFETARGET_okLOGICAL1
170*c87b03e5Sespie     ffetargetLogical1 logical1;
171*c87b03e5Sespie #endif
172*c87b03e5Sespie #if FFETARGET_okLOGICAL2
173*c87b03e5Sespie     ffetargetLogical2 logical2;
174*c87b03e5Sespie #endif
175*c87b03e5Sespie #if FFETARGET_okLOGICAL3
176*c87b03e5Sespie     ffetargetLogical3 logical3;
177*c87b03e5Sespie #endif
178*c87b03e5Sespie #if FFETARGET_okLOGICAL4
179*c87b03e5Sespie     ffetargetLogical4 logical4;
180*c87b03e5Sespie #endif
181*c87b03e5Sespie #if FFETARGET_okLOGICAL5
182*c87b03e5Sespie     ffetargetLogical5 logical5;
183*c87b03e5Sespie #endif
184*c87b03e5Sespie #if FFETARGET_okLOGICAL6
185*c87b03e5Sespie     ffetargetLogical6 logical6;
186*c87b03e5Sespie #endif
187*c87b03e5Sespie #if FFETARGET_okLOGICAL7
188*c87b03e5Sespie     ffetargetLogical7 logical7;
189*c87b03e5Sespie #endif
190*c87b03e5Sespie #if FFETARGET_okLOGICAL8
191*c87b03e5Sespie     ffetargetLogical8 logical8;
192*c87b03e5Sespie #endif
193*c87b03e5Sespie #if FFETARGET_okREAL1
194*c87b03e5Sespie     ffetargetReal1 real1;
195*c87b03e5Sespie #endif
196*c87b03e5Sespie #if FFETARGET_okREAL2
197*c87b03e5Sespie     ffetargetReal2 real2;
198*c87b03e5Sespie #endif
199*c87b03e5Sespie #if FFETARGET_okREAL3
200*c87b03e5Sespie     ffetargetReal3 real3;
201*c87b03e5Sespie #endif
202*c87b03e5Sespie #if FFETARGET_okREAL4
203*c87b03e5Sespie     ffetargetReal4 real4;
204*c87b03e5Sespie #endif
205*c87b03e5Sespie #if FFETARGET_okREAL5
206*c87b03e5Sespie     ffetargetReal5 real5;
207*c87b03e5Sespie #endif
208*c87b03e5Sespie #if FFETARGET_okREAL6
209*c87b03e5Sespie     ffetargetReal6 real6;
210*c87b03e5Sespie #endif
211*c87b03e5Sespie #if FFETARGET_okREAL7
212*c87b03e5Sespie     ffetargetReal7 real7;
213*c87b03e5Sespie #endif
214*c87b03e5Sespie #if FFETARGET_okREAL8
215*c87b03e5Sespie     ffetargetReal8 real8;
216*c87b03e5Sespie #endif
217*c87b03e5Sespie #if FFETARGET_okCOMPLEX1
218*c87b03e5Sespie     ffetargetComplex1 complex1;
219*c87b03e5Sespie #endif
220*c87b03e5Sespie #if FFETARGET_okCOMPLEX2
221*c87b03e5Sespie     ffetargetComplex2 complex2;
222*c87b03e5Sespie #endif
223*c87b03e5Sespie #if FFETARGET_okCOMPLEX3
224*c87b03e5Sespie     ffetargetComplex3 complex3;
225*c87b03e5Sespie #endif
226*c87b03e5Sespie #if FFETARGET_okCOMPLEX4
227*c87b03e5Sespie     ffetargetComplex4 complex4;
228*c87b03e5Sespie #endif
229*c87b03e5Sespie #if FFETARGET_okCOMPLEX5
230*c87b03e5Sespie     ffetargetComplex5 complex5;
231*c87b03e5Sespie #endif
232*c87b03e5Sespie #if FFETARGET_okCOMPLEX6
233*c87b03e5Sespie     ffetargetComplex6 complex6;
234*c87b03e5Sespie #endif
235*c87b03e5Sespie #if FFETARGET_okCOMPLEX7
236*c87b03e5Sespie     ffetargetComplex7 complex7;
237*c87b03e5Sespie #endif
238*c87b03e5Sespie #if FFETARGET_okCOMPLEX8
239*c87b03e5Sespie     ffetargetComplex8 complex8;
240*c87b03e5Sespie #endif
241*c87b03e5Sespie #if FFETARGET_okCHARACTER1
242*c87b03e5Sespie     ffetargetCharacter1 character1;
243*c87b03e5Sespie #endif
244*c87b03e5Sespie #if FFETARGET_okCHARACTER2
245*c87b03e5Sespie     ffetargetCharacter2 character2;
246*c87b03e5Sespie #endif
247*c87b03e5Sespie #if FFETARGET_okCHARACTER3
248*c87b03e5Sespie     ffetargetCharacter3 character3;
249*c87b03e5Sespie #endif
250*c87b03e5Sespie #if FFETARGET_okCHARACTER4
251*c87b03e5Sespie     ffetargetCharacter4 character4;
252*c87b03e5Sespie #endif
253*c87b03e5Sespie #if FFETARGET_okCHARACTER5
254*c87b03e5Sespie     ffetargetCharacter5 character5;
255*c87b03e5Sespie #endif
256*c87b03e5Sespie #if FFETARGET_okCHARACTER6
257*c87b03e5Sespie     ffetargetCharacter6 character6;
258*c87b03e5Sespie #endif
259*c87b03e5Sespie #if FFETARGET_okCHARACTER7
260*c87b03e5Sespie     ffetargetCharacter7 character7;
261*c87b03e5Sespie #endif
262*c87b03e5Sespie #if FFETARGET_okCHARACTER8
263*c87b03e5Sespie     ffetargetCharacter8 character8;
264*c87b03e5Sespie #endif
265*c87b03e5Sespie   };
266*c87b03e5Sespie 
267*c87b03e5Sespie union _ffebld_constant_array_
268*c87b03e5Sespie   {
269*c87b03e5Sespie #if FFETARGET_okINTEGER1
270*c87b03e5Sespie     ffetargetInteger1 *integer1;
271*c87b03e5Sespie #endif
272*c87b03e5Sespie #if FFETARGET_okINTEGER2
273*c87b03e5Sespie     ffetargetInteger2 *integer2;
274*c87b03e5Sespie #endif
275*c87b03e5Sespie #if FFETARGET_okINTEGER3
276*c87b03e5Sespie     ffetargetInteger3 *integer3;
277*c87b03e5Sespie #endif
278*c87b03e5Sespie #if FFETARGET_okINTEGER4
279*c87b03e5Sespie     ffetargetInteger4 *integer4;
280*c87b03e5Sespie #endif
281*c87b03e5Sespie #if FFETARGET_okINTEGER5
282*c87b03e5Sespie     ffetargetInteger5 *integer5;
283*c87b03e5Sespie #endif
284*c87b03e5Sespie #if FFETARGET_okINTEGER6
285*c87b03e5Sespie     ffetargetInteger6 *integer6;
286*c87b03e5Sespie #endif
287*c87b03e5Sespie #if FFETARGET_okINTEGER7
288*c87b03e5Sespie     ffetargetInteger7 *integer7;
289*c87b03e5Sespie #endif
290*c87b03e5Sespie #if FFETARGET_okINTEGER8
291*c87b03e5Sespie     ffetargetInteger8 *integer8;
292*c87b03e5Sespie #endif
293*c87b03e5Sespie #if FFETARGET_okLOGICAL1
294*c87b03e5Sespie     ffetargetLogical1 *logical1;
295*c87b03e5Sespie #endif
296*c87b03e5Sespie #if FFETARGET_okLOGICAL2
297*c87b03e5Sespie     ffetargetLogical2 *logical2;
298*c87b03e5Sespie #endif
299*c87b03e5Sespie #if FFETARGET_okLOGICAL3
300*c87b03e5Sespie     ffetargetLogical3 *logical3;
301*c87b03e5Sespie #endif
302*c87b03e5Sespie #if FFETARGET_okLOGICAL4
303*c87b03e5Sespie     ffetargetLogical4 *logical4;
304*c87b03e5Sespie #endif
305*c87b03e5Sespie #if FFETARGET_okLOGICAL5
306*c87b03e5Sespie     ffetargetLogical5 *logical5;
307*c87b03e5Sespie #endif
308*c87b03e5Sespie #if FFETARGET_okLOGICAL6
309*c87b03e5Sespie     ffetargetLogical6 *logical6;
310*c87b03e5Sespie #endif
311*c87b03e5Sespie #if FFETARGET_okLOGICAL7
312*c87b03e5Sespie     ffetargetLogical7 *logical7;
313*c87b03e5Sespie #endif
314*c87b03e5Sespie #if FFETARGET_okLOGICAL8
315*c87b03e5Sespie     ffetargetLogical8 *logical8;
316*c87b03e5Sespie #endif
317*c87b03e5Sespie #if FFETARGET_okREAL1
318*c87b03e5Sespie     ffetargetReal1 *real1;
319*c87b03e5Sespie #endif
320*c87b03e5Sespie #if FFETARGET_okREAL2
321*c87b03e5Sespie     ffetargetReal2 *real2;
322*c87b03e5Sespie #endif
323*c87b03e5Sespie #if FFETARGET_okREAL3
324*c87b03e5Sespie     ffetargetReal3 *real3;
325*c87b03e5Sespie #endif
326*c87b03e5Sespie #if FFETARGET_okREAL4
327*c87b03e5Sespie     ffetargetReal4 *real4;
328*c87b03e5Sespie #endif
329*c87b03e5Sespie #if FFETARGET_okREAL5
330*c87b03e5Sespie     ffetargetReal5 *real5;
331*c87b03e5Sespie #endif
332*c87b03e5Sespie #if FFETARGET_okREAL6
333*c87b03e5Sespie     ffetargetReal6 *real6;
334*c87b03e5Sespie #endif
335*c87b03e5Sespie #if FFETARGET_okREAL7
336*c87b03e5Sespie     ffetargetReal7 *real7;
337*c87b03e5Sespie #endif
338*c87b03e5Sespie #if FFETARGET_okREAL8
339*c87b03e5Sespie     ffetargetReal8 *real8;
340*c87b03e5Sespie #endif
341*c87b03e5Sespie #if FFETARGET_okCOMPLEX1
342*c87b03e5Sespie     ffetargetComplex1 *complex1;
343*c87b03e5Sespie #endif
344*c87b03e5Sespie #if FFETARGET_okCOMPLEX2
345*c87b03e5Sespie     ffetargetComplex2 *complex2;
346*c87b03e5Sespie #endif
347*c87b03e5Sespie #if FFETARGET_okCOMPLEX3
348*c87b03e5Sespie     ffetargetComplex3 *complex3;
349*c87b03e5Sespie #endif
350*c87b03e5Sespie #if FFETARGET_okCOMPLEX4
351*c87b03e5Sespie     ffetargetComplex4 *complex4;
352*c87b03e5Sespie #endif
353*c87b03e5Sespie #if FFETARGET_okCOMPLEX5
354*c87b03e5Sespie     ffetargetComplex5 *complex5;
355*c87b03e5Sespie #endif
356*c87b03e5Sespie #if FFETARGET_okCOMPLEX6
357*c87b03e5Sespie     ffetargetComplex6 *complex6;
358*c87b03e5Sespie #endif
359*c87b03e5Sespie #if FFETARGET_okCOMPLEX7
360*c87b03e5Sespie     ffetargetComplex7 *complex7;
361*c87b03e5Sespie #endif
362*c87b03e5Sespie #if FFETARGET_okCOMPLEX8
363*c87b03e5Sespie     ffetargetComplex8 *complex8;
364*c87b03e5Sespie #endif
365*c87b03e5Sespie #if FFETARGET_okCHARACTER1
366*c87b03e5Sespie     ffetargetCharacterUnit1 *character1;
367*c87b03e5Sespie #endif
368*c87b03e5Sespie #if FFETARGET_okCHARACTER2
369*c87b03e5Sespie     ffetargetCharacterUnit2 *character2;
370*c87b03e5Sespie #endif
371*c87b03e5Sespie #if FFETARGET_okCHARACTER3
372*c87b03e5Sespie     ffetargetCharacterUnit3 *character3;
373*c87b03e5Sespie #endif
374*c87b03e5Sespie #if FFETARGET_okCHARACTER4
375*c87b03e5Sespie     ffetargetCharacterUnit4 *character4;
376*c87b03e5Sespie #endif
377*c87b03e5Sespie #if FFETARGET_okCHARACTER5
378*c87b03e5Sespie     ffetargetCharacterUnit5 *character5;
379*c87b03e5Sespie #endif
380*c87b03e5Sespie #if FFETARGET_okCHARACTER6
381*c87b03e5Sespie     ffetargetCharacterUnit6 *character6;
382*c87b03e5Sespie #endif
383*c87b03e5Sespie #if FFETARGET_okCHARACTER7
384*c87b03e5Sespie     ffetargetCharacterUnit7 *character7;
385*c87b03e5Sespie #endif
386*c87b03e5Sespie #if FFETARGET_okCHARACTER8
387*c87b03e5Sespie     ffetargetCharacterUnit8 *character8;
388*c87b03e5Sespie #endif
389*c87b03e5Sespie   };
390*c87b03e5Sespie 
391*c87b03e5Sespie struct _ffebld_
392*c87b03e5Sespie   {
393*c87b03e5Sespie     ffebldOp op;
394*c87b03e5Sespie     ffeinfo info;		/* Not used or valid for
395*c87b03e5Sespie 				   op=={STAR,ITEM,BOUNDS,REPEAT,LABTER,
396*c87b03e5Sespie 				   LABTOK,IMPDO}. */
397*c87b03e5Sespie     union
398*c87b03e5Sespie       {
399*c87b03e5Sespie 	struct
400*c87b03e5Sespie 	  {
401*c87b03e5Sespie 	    ffebld left;
402*c87b03e5Sespie 	    ffebld right;
403*c87b03e5Sespie #ifdef FFECOM_nonterHOOK
404*c87b03e5Sespie 	    ffecomNonter hook;	/* Whatever the compiler/backend wants! */
405*c87b03e5Sespie #endif
406*c87b03e5Sespie 	  }
407*c87b03e5Sespie 	nonter;
408*c87b03e5Sespie 	struct
409*c87b03e5Sespie 	  {
410*c87b03e5Sespie 	    ffebld head;
411*c87b03e5Sespie 	    ffebld trail;
412*c87b03e5Sespie #ifdef FFECOM_itemHOOK
413*c87b03e5Sespie 	    ffecomItem hook;	/* Whatever the compiler/backend wants! */
414*c87b03e5Sespie #endif
415*c87b03e5Sespie 	  }
416*c87b03e5Sespie 	item;
417*c87b03e5Sespie 	struct
418*c87b03e5Sespie 	  {
419*c87b03e5Sespie 	    ffebldConstant expr;
420*c87b03e5Sespie 	    ffebld orig;	/* Original expression, or NULL if none. */
421*c87b03e5Sespie 	    ffetargetAlign pad;	/* Initial padding (for DATA, etc.). */
422*c87b03e5Sespie 	  }
423*c87b03e5Sespie 	conter;
424*c87b03e5Sespie 	struct
425*c87b03e5Sespie 	  {
426*c87b03e5Sespie 	    ffebldConstantArray array;
427*c87b03e5Sespie 	    ffetargetOffset size;
428*c87b03e5Sespie 	    ffetargetAlign pad;	/* Initial padding (for DATA, etc.). */
429*c87b03e5Sespie 	  }
430*c87b03e5Sespie 	arrter;
431*c87b03e5Sespie 	struct
432*c87b03e5Sespie 	  {
433*c87b03e5Sespie 	    ffebldConstantArray array;
434*c87b03e5Sespie 	    ffebit bits;
435*c87b03e5Sespie 	    ffetargetAlign pad;	/* Initial padding (for DATA, etc.). */
436*c87b03e5Sespie 	  }
437*c87b03e5Sespie 	accter;
438*c87b03e5Sespie 	struct
439*c87b03e5Sespie 	  {
440*c87b03e5Sespie 	    ffesymbol symbol;
441*c87b03e5Sespie 	    ffeintrinGen generic;	/* Id for generic intrinsic. */
442*c87b03e5Sespie 	    ffeintrinSpec specific;	/* Id for specific intrinsic. */
443*c87b03e5Sespie 	    ffeintrinImp implementation;	/* Id for implementation. */
444*c87b03e5Sespie 	    bool do_iter;	/* TRUE if this ref is a read-only ref by
445*c87b03e5Sespie 				   definition (ref within DO loop using this
446*c87b03e5Sespie 				   var as iterator). */
447*c87b03e5Sespie 	  }
448*c87b03e5Sespie 	symter;
449*c87b03e5Sespie 	ffelab labter;
450*c87b03e5Sespie 	ffelexToken labtok;
451*c87b03e5Sespie       }
452*c87b03e5Sespie     u;
453*c87b03e5Sespie   };
454*c87b03e5Sespie 
455*c87b03e5Sespie struct _ffebld_constant_
456*c87b03e5Sespie   {
457*c87b03e5Sespie     ffebldConstant next;
458*c87b03e5Sespie     ffebldConstant first_complex;	/* First complex const with me as
459*c87b03e5Sespie 					   real. */
460*c87b03e5Sespie     ffebldConstant negated;	/* We point to each other through here. */
461*c87b03e5Sespie     ffebldConst consttype;
462*c87b03e5Sespie #ifdef FFECOM_constantHOOK
463*c87b03e5Sespie     ffecomConstant hook;	/* Whatever the compiler/backend wants! */
464*c87b03e5Sespie #endif
465*c87b03e5Sespie     bool numeric;		/* A numeric kind of constant. */
466*c87b03e5Sespie     ffebldConstantUnion u;
467*c87b03e5Sespie   };
468*c87b03e5Sespie 
469*c87b03e5Sespie struct _ffebld_pool_stack_
470*c87b03e5Sespie   {
471*c87b03e5Sespie     ffebldPoolstack_ next;
472*c87b03e5Sespie     mallocPool pool;
473*c87b03e5Sespie   };
474*c87b03e5Sespie 
475*c87b03e5Sespie /* Global objects accessed by users of this module. */
476*c87b03e5Sespie 
477*c87b03e5Sespie extern const ffebldArity ffebld_arity_op_[(int) FFEBLD_op];
478*c87b03e5Sespie extern struct _ffebld_pool_stack_ ffebld_pool_stack_;
479*c87b03e5Sespie 
480*c87b03e5Sespie /* Declare functions with prototypes. */
481*c87b03e5Sespie 
482*c87b03e5Sespie int ffebld_constant_cmp (ffebldConstant c1, ffebldConstant c2);
483*c87b03e5Sespie bool ffebld_constant_is_magical (ffebldConstant c);
484*c87b03e5Sespie bool ffebld_constant_is_zero (ffebldConstant c);
485*c87b03e5Sespie #if FFETARGET_okCHARACTER1
486*c87b03e5Sespie ffebldConstant ffebld_constant_new_character1 (ffelexToken t);
487*c87b03e5Sespie ffebldConstant ffebld_constant_new_character1_val (ffetargetCharacter1 val);
488*c87b03e5Sespie #endif
489*c87b03e5Sespie #if FFETARGET_okCHARACTER2
490*c87b03e5Sespie ffebldConstant ffebld_constant_new_character2 (ffelexToken t);
491*c87b03e5Sespie ffebldConstant ffebld_constant_new_character2_val (ffetargetCharacter2 val);
492*c87b03e5Sespie #endif
493*c87b03e5Sespie #if FFETARGET_okCHARACTER3
494*c87b03e5Sespie ffebldConstant ffebld_constant_new_character3 (ffelexToken t);
495*c87b03e5Sespie ffebldConstant ffebld_constant_new_character3_val (ffetargetCharacter3 val);
496*c87b03e5Sespie #endif
497*c87b03e5Sespie #if FFETARGET_okCHARACTER4
498*c87b03e5Sespie ffebldConstant ffebld_constant_new_character4 (ffelexToken t);
499*c87b03e5Sespie ffebldConstant ffebld_constant_new_character4_val (ffetargetCharacter4 val);
500*c87b03e5Sespie #endif
501*c87b03e5Sespie #if FFETARGET_okCHARACTER5
502*c87b03e5Sespie ffebldConstant ffebld_constant_new_character5 (ffelexToken t);
503*c87b03e5Sespie ffebldConstant ffebld_constant_new_character5_val (ffetargetCharacter5 val);
504*c87b03e5Sespie #endif
505*c87b03e5Sespie #if FFETARGET_okCHARACTER6
506*c87b03e5Sespie ffebldConstant ffebld_constant_new_character6 (ffelexToken t);
507*c87b03e5Sespie ffebldConstant ffebld_constant_new_character6_val (ffetargetCharacter6 val);
508*c87b03e5Sespie #endif
509*c87b03e5Sespie #if FFETARGET_okCHARACTER7
510*c87b03e5Sespie ffebldConstant ffebld_constant_new_character7 (ffelexToken t);
511*c87b03e5Sespie ffebldConstant ffebld_constant_new_character7_val (ffetargetCharacter7 val);
512*c87b03e5Sespie #endif
513*c87b03e5Sespie #if FFETARGET_okCHARACTER8
514*c87b03e5Sespie ffebldConstant ffebld_constant_new_character8 (ffelexToken t);
515*c87b03e5Sespie ffebldConstant ffebld_constant_new_character8_val (ffetargetCharacter8 val);
516*c87b03e5Sespie #endif
517*c87b03e5Sespie #if FFETARGET_okCOMPLEX1
518*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex1 (ffebldConstant real,
519*c87b03e5Sespie 					     ffebldConstant imaginary);
520*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex1_val (ffetargetComplex1 val);
521*c87b03e5Sespie #endif
522*c87b03e5Sespie #if FFETARGET_okCOMPLEX2
523*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex2 (ffebldConstant real,
524*c87b03e5Sespie 					     ffebldConstant imaginary);
525*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex2_val (ffetargetComplex2 val);
526*c87b03e5Sespie #endif
527*c87b03e5Sespie #if FFETARGET_okCOMPLEX3
528*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex3 (ffebldConstant real,
529*c87b03e5Sespie 					     ffebldConstant imaginary);
530*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex3_val (ffetargetComplex3 val);
531*c87b03e5Sespie #endif
532*c87b03e5Sespie #if FFETARGET_okCOMPLEX4
533*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex4 (ffebldConstant real,
534*c87b03e5Sespie 					     ffebldConstant imaginary);
535*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex4_val (ffetargetComplex4 val);
536*c87b03e5Sespie #endif
537*c87b03e5Sespie #if FFETARGET_okCOMPLEX5
538*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex5 (ffebldConstant real,
539*c87b03e5Sespie 					     ffebldConstant imaginary);
540*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex5_val (ffetargetComplex5 val);
541*c87b03e5Sespie #endif
542*c87b03e5Sespie #if FFETARGET_okCOMPLEX6
543*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex6 (ffebldConstant real,
544*c87b03e5Sespie 					     ffebldConstant imaginary);
545*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex6_val (ffetargetComplex6 val);
546*c87b03e5Sespie #endif
547*c87b03e5Sespie #if FFETARGET_okCOMPLEX7
548*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex7 (ffebldConstant real,
549*c87b03e5Sespie 					     ffebldConstant imaginary);
550*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex7_val (ffetargetComplex7 val);
551*c87b03e5Sespie #endif
552*c87b03e5Sespie #if FFETARGET_okCOMPLEX8
553*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex8 (ffebldConstant real,
554*c87b03e5Sespie 					     ffebldConstant imaginary);
555*c87b03e5Sespie ffebldConstant ffebld_constant_new_complex8_val (ffetargetComplex8 val);
556*c87b03e5Sespie #endif
557*c87b03e5Sespie ffebldConstant ffebld_constant_new_hollerith (ffelexToken t);
558*c87b03e5Sespie ffebldConstant ffebld_constant_new_hollerith_val (ffetargetHollerith val);
559*c87b03e5Sespie #if FFETARGET_okINTEGER1
560*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer1 (ffelexToken t);
561*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer1_val (ffetargetInteger1 val);
562*c87b03e5Sespie #endif
563*c87b03e5Sespie #if FFETARGET_okINTEGER2
564*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer2 (ffelexToken t);
565*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer2_val (ffetargetInteger2 val);
566*c87b03e5Sespie #endif
567*c87b03e5Sespie #if FFETARGET_okINTEGER3
568*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer3 (ffelexToken t);
569*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer3_val (ffetargetInteger3 val);
570*c87b03e5Sespie #endif
571*c87b03e5Sespie #if FFETARGET_okINTEGER4
572*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer4 (ffelexToken t);
573*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer4_val (ffetargetInteger4 val);
574*c87b03e5Sespie #endif
575*c87b03e5Sespie #if FFETARGET_okINTEGER5
576*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer5 (ffelexToken t);
577*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer5_val (ffetargetInteger5 val);
578*c87b03e5Sespie #endif
579*c87b03e5Sespie #if FFETARGET_okINTEGER6
580*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer6 (ffelexToken t);
581*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer6_val (ffetargetInteger6 val);
582*c87b03e5Sespie #endif
583*c87b03e5Sespie #if FFETARGET_okINTEGER7
584*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer7 (ffelexToken t);
585*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer7_val (ffetargetInteger7 val);
586*c87b03e5Sespie #endif
587*c87b03e5Sespie #if FFETARGET_okINTEGER8
588*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer8 (ffelexToken t);
589*c87b03e5Sespie ffebldConstant ffebld_constant_new_integer8_val (ffetargetInteger8 val);
590*c87b03e5Sespie #endif
591*c87b03e5Sespie ffebldConstant ffebld_constant_new_integerbinary (ffelexToken t);
592*c87b03e5Sespie ffebldConstant ffebld_constant_new_integerhex (ffelexToken t);
593*c87b03e5Sespie ffebldConstant ffebld_constant_new_integeroctal (ffelexToken t);
594*c87b03e5Sespie #if FFETARGET_okLOGICAL1
595*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical1 (bool truth);
596*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical1_val (ffetargetLogical1 val);
597*c87b03e5Sespie #endif
598*c87b03e5Sespie #if FFETARGET_okLOGICAL2
599*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical2 (bool truth);
600*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical2_val (ffetargetLogical2 val);
601*c87b03e5Sespie #endif
602*c87b03e5Sespie #if FFETARGET_okLOGICAL3
603*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical3 (bool truth);
604*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical3_val (ffetargetLogical3 val);
605*c87b03e5Sespie #endif
606*c87b03e5Sespie #if FFETARGET_okLOGICAL4
607*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical4 (bool truth);
608*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical4_val (ffetargetLogical4 val);
609*c87b03e5Sespie #endif
610*c87b03e5Sespie #if FFETARGET_okLOGICAL5
611*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical5 (bool truth);
612*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical5_val (ffetargetLogical5 val);
613*c87b03e5Sespie #endif
614*c87b03e5Sespie #if FFETARGET_okLOGICAL6
615*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical6 (bool truth);
616*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical6_val (ffetargetLogical6 val);
617*c87b03e5Sespie #endif
618*c87b03e5Sespie #if FFETARGET_okLOGICAL7
619*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical7 (bool truth);
620*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical7_val (ffetargetLogical7 val);
621*c87b03e5Sespie #endif
622*c87b03e5Sespie #if FFETARGET_okLOGICAL8
623*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical8 (bool truth);
624*c87b03e5Sespie ffebldConstant ffebld_constant_new_logical8_val (ffetargetLogical8 val);
625*c87b03e5Sespie #endif
626*c87b03e5Sespie #if FFETARGET_okREAL1
627*c87b03e5Sespie ffebldConstant ffebld_constant_new_real1 (ffelexToken integer,
628*c87b03e5Sespie 	    ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
629*c87b03e5Sespie 		    ffelexToken exponent_sign, ffelexToken exponent_digits);
630*c87b03e5Sespie ffebldConstant ffebld_constant_new_real1_val (ffetargetReal1 val);
631*c87b03e5Sespie #endif
632*c87b03e5Sespie #if FFETARGET_okREAL2
633*c87b03e5Sespie ffebldConstant ffebld_constant_new_real2 (ffelexToken integer,
634*c87b03e5Sespie 	    ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
635*c87b03e5Sespie 		    ffelexToken exponent_sign, ffelexToken exponent_digits);
636*c87b03e5Sespie ffebldConstant ffebld_constant_new_real2_val (ffetargetReal2 val);
637*c87b03e5Sespie #endif
638*c87b03e5Sespie #if FFETARGET_okREAL3
639*c87b03e5Sespie ffebldConstant ffebld_constant_new_real3 (ffelexToken integer,
640*c87b03e5Sespie 	    ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
641*c87b03e5Sespie 		    ffelexToken exponent_sign, ffelexToken exponent_digits);
642*c87b03e5Sespie ffebldConstant ffebld_constant_new_real3_val (ffetargetReal3 val);
643*c87b03e5Sespie #endif
644*c87b03e5Sespie #if FFETARGET_okREAL4
645*c87b03e5Sespie ffebldConstant ffebld_constant_new_real4 (ffelexToken integer,
646*c87b03e5Sespie 	    ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
647*c87b03e5Sespie 		    ffelexToken exponent_sign, ffelexToken exponent_digits);
648*c87b03e5Sespie ffebldConstant ffebld_constant_new_real4_val (ffetargetReal4 val);
649*c87b03e5Sespie #endif
650*c87b03e5Sespie #if FFETARGET_okREAL5
651*c87b03e5Sespie ffebldConstant ffebld_constant_new_real5 (ffelexToken integer,
652*c87b03e5Sespie 	    ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
653*c87b03e5Sespie 		    ffelexToken exponent_sign, ffelexToken exponent_digits);
654*c87b03e5Sespie ffebldConstant ffebld_constant_new_real5_val (ffetargetReal5 val);
655*c87b03e5Sespie #endif
656*c87b03e5Sespie #if FFETARGET_okREAL6
657*c87b03e5Sespie ffebldConstant ffebld_constant_new_real6 (ffelexToken integer,
658*c87b03e5Sespie 	    ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
659*c87b03e5Sespie 		    ffelexToken exponent_sign, ffelexToken exponent_digits);
660*c87b03e5Sespie ffebldConstant ffebld_constant_new_real6_val (ffetargetReal6 val);
661*c87b03e5Sespie #endif
662*c87b03e5Sespie #if FFETARGET_okREAL7
663*c87b03e5Sespie ffebldConstant ffebld_constant_new_real7 (ffelexToken integer,
664*c87b03e5Sespie 	    ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
665*c87b03e5Sespie 		    ffelexToken exponent_sign, ffelexToken exponent_digits);
666*c87b03e5Sespie ffebldConstant ffebld_constant_new_real7_val (ffetargetReal7 val);
667*c87b03e5Sespie #endif
668*c87b03e5Sespie #if FFETARGET_okREAL8
669*c87b03e5Sespie ffebldConstant ffebld_constant_new_real8 (ffelexToken integer,
670*c87b03e5Sespie 	    ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
671*c87b03e5Sespie 		    ffelexToken exponent_sign, ffelexToken exponent_digits);
672*c87b03e5Sespie ffebldConstant ffebld_constant_new_real8_val (ffetargetReal8 val);
673*c87b03e5Sespie #endif
674*c87b03e5Sespie ffebldConstant ffebld_constant_new_typeless_bm (ffelexToken t);
675*c87b03e5Sespie ffebldConstant ffebld_constant_new_typeless_bv (ffelexToken t);
676*c87b03e5Sespie ffebldConstant ffebld_constant_new_typeless_hxm (ffelexToken t);
677*c87b03e5Sespie ffebldConstant ffebld_constant_new_typeless_hxv (ffelexToken t);
678*c87b03e5Sespie ffebldConstant ffebld_constant_new_typeless_hzm (ffelexToken t);
679*c87b03e5Sespie ffebldConstant ffebld_constant_new_typeless_hzv (ffelexToken t);
680*c87b03e5Sespie ffebldConstant ffebld_constant_new_typeless_om (ffelexToken t);
681*c87b03e5Sespie ffebldConstant ffebld_constant_new_typeless_ov (ffelexToken t);
682*c87b03e5Sespie ffebldConstant ffebld_constant_new_typeless_val (ffebldConst type,
683*c87b03e5Sespie 						 ffetargetTypeless val);
684*c87b03e5Sespie ffebldConstant ffebld_constant_negated (ffebldConstant c);
685*c87b03e5Sespie ffebldConstantUnion ffebld_constantarray_get (ffebldConstantArray array,
686*c87b03e5Sespie 	   ffeinfoBasictype bt, ffeinfoKindtype kt, ffetargetOffset offset);
687*c87b03e5Sespie void ffebld_constantarray_kill (ffebldConstantArray array, ffeinfoBasictype bt,
688*c87b03e5Sespie 				ffeinfoKindtype kt, ffetargetOffset size);
689*c87b03e5Sespie ffebldConstantArray ffebld_constantarray_new (ffeinfoBasictype bt,
690*c87b03e5Sespie 				  ffeinfoKindtype kt, ffetargetOffset size);
691*c87b03e5Sespie void ffebld_constantarray_prepare (void **aptr, void **cptr, size_t *size,
692*c87b03e5Sespie        ffebldConstantArray array, ffeinfoBasictype abt, ffeinfoKindtype akt,
693*c87b03e5Sespie 		      ffetargetOffset offset, ffebldConstantUnion *constant,
694*c87b03e5Sespie 				 ffeinfoBasictype cbt, ffeinfoKindtype ckt);
695*c87b03e5Sespie void ffebld_constantarray_preparray (void **aptr, void **cptr, size_t *size,
696*c87b03e5Sespie        ffebldConstantArray array, ffeinfoBasictype abt, ffeinfoKindtype akt,
697*c87b03e5Sespie 		   ffetargetOffset offset, ffebldConstantArray source_array,
698*c87b03e5Sespie 				 ffeinfoBasictype cbt, ffeinfoKindtype ckt);
699*c87b03e5Sespie void ffebld_constantarray_put (ffebldConstantArray array, ffeinfoBasictype bt,
700*c87b03e5Sespie   ffeinfoKindtype kt, ffetargetOffset offset, ffebldConstantUnion constant);
701*c87b03e5Sespie void ffebld_init_0 (void);
702*c87b03e5Sespie void ffebld_init_1 (void);
703*c87b03e5Sespie void ffebld_init_2 (void);
704*c87b03e5Sespie ffebldListLength ffebld_list_length (ffebld l);
705*c87b03e5Sespie ffebld ffebld_new_accter (ffebldConstantArray array, ffebit b);
706*c87b03e5Sespie ffebld ffebld_new_arrter (ffebldConstantArray array, ffetargetOffset size);
707*c87b03e5Sespie ffebld ffebld_new_conter_with_orig (ffebldConstant c, ffebld orig);
708*c87b03e5Sespie ffebld ffebld_new_item (ffebld head, ffebld trail);
709*c87b03e5Sespie ffebld ffebld_new_labter (ffelab l);
710*c87b03e5Sespie ffebld ffebld_new_labtok (ffelexToken t);
711*c87b03e5Sespie ffebld ffebld_new_none (ffebldOp o);
712*c87b03e5Sespie ffebld ffebld_new_symter (ffesymbol s, ffeintrinGen gen, ffeintrinSpec spec,
713*c87b03e5Sespie 			  ffeintrinImp imp);
714*c87b03e5Sespie ffebld ffebld_new_one (ffebldOp o, ffebld left);
715*c87b03e5Sespie ffebld ffebld_new_two (ffebldOp o, ffebld left, ffebld right);
716*c87b03e5Sespie const char *ffebld_op_string (ffebldOp o);
717*c87b03e5Sespie void ffebld_pool_pop (void);
718*c87b03e5Sespie void ffebld_pool_push (mallocPool pool);
719*c87b03e5Sespie ffetargetCharacterSize ffebld_size_max (ffebld b);
720*c87b03e5Sespie 
721*c87b03e5Sespie /* Define macros. */
722*c87b03e5Sespie 
723*c87b03e5Sespie #define ffebld_accter(b) ((b)->u.accter.array)
724*c87b03e5Sespie #define ffebld_accter_bits(b) ((b)->u.accter.bits)
725*c87b03e5Sespie #define ffebld_accter_pad(b) ((b)->u.accter.pad)
726*c87b03e5Sespie #define ffebld_accter_set_bits(b,bt) ((b)->u.accter.bits = (bt))
727*c87b03e5Sespie #define ffebld_accter_set_pad(b,p) ((b)->u.accter.pad = (p))
728*c87b03e5Sespie #define ffebld_accter_size(b) ffebit_size((b)->u.accter.bits)
729*c87b03e5Sespie #define ffebld_append_item(b,i) (**(b) = ffebld_new_item((i),NULL),	      \
730*c87b03e5Sespie 				 *(b) = &((**(b))->u.item.trail))
731*c87b03e5Sespie #define ffebld_arity(b) ffebld_arity_op(ffebld_op(b))
732*c87b03e5Sespie #define ffebld_arity_op(o) (ffebld_arity_op_[o])
733*c87b03e5Sespie #define ffebld_arrter(b) ((b)->u.arrter.array)
734*c87b03e5Sespie #define ffebld_arrter_pad(b) ((b)->u.arrter.pad)
735*c87b03e5Sespie #define ffebld_arrter_set_pad(b,p) ((b)->u.arrter.pad = (p))
736*c87b03e5Sespie #define ffebld_arrter_set_size(b,s) ((b)->u.arrter.size = (s))
737*c87b03e5Sespie #define ffebld_arrter_size(b) ((b)->u.arrter.size)
738*c87b03e5Sespie #define ffebld_basictype(b) (ffeinfo_basictype (ffebld_info ((b))))
739*c87b03e5Sespie #if FFEBLD_whereconstCURRENT_ == FFEBLD_whereconstPROGUNIT_
740*c87b03e5Sespie #define ffebld_constant_pool() ffe_pool_program_unit()
741*c87b03e5Sespie #elif FFEBLD_whereconstCURRENT_ == FFEBLD_whereconstFILE_
742*c87b03e5Sespie #define ffebld_constant_pool() ffe_pool_file()
743*c87b03e5Sespie #else
744*c87b03e5Sespie #error
745*c87b03e5Sespie #endif
746*c87b03e5Sespie #define ffebld_constant_character1(c) ((c)->u.character1)
747*c87b03e5Sespie #define ffebld_constant_character2(c) ((c)->u.character2)
748*c87b03e5Sespie #define ffebld_constant_character3(c) ((c)->u.character3)
749*c87b03e5Sespie #define ffebld_constant_character4(c) ((c)->u.character4)
750*c87b03e5Sespie #define ffebld_constant_character5(c) ((c)->u.character5)
751*c87b03e5Sespie #define ffebld_constant_character6(c) ((c)->u.character6)
752*c87b03e5Sespie #define ffebld_constant_character7(c) ((c)->u.character7)
753*c87b03e5Sespie #define ffebld_constant_character8(c) ((c)->u.character8)
754*c87b03e5Sespie #define ffebld_constant_characterdefault ffebld_constant_character1
755*c87b03e5Sespie #define ffebld_constant_complex1(c) ((c)->u.complex1)
756*c87b03e5Sespie #define ffebld_constant_complex2(c) ((c)->u.complex2)
757*c87b03e5Sespie #define ffebld_constant_complex3(c) ((c)->u.complex3)
758*c87b03e5Sespie #define ffebld_constant_complex4(c) ((c)->u.complex4)
759*c87b03e5Sespie #define ffebld_constant_complex5(c) ((c)->u.complex5)
760*c87b03e5Sespie #define ffebld_constant_complex6(c) ((c)->u.complex6)
761*c87b03e5Sespie #define ffebld_constant_complex7(c) ((c)->u.complex7)
762*c87b03e5Sespie #define ffebld_constant_complex8(c) ((c)->u.complex8)
763*c87b03e5Sespie #define ffebld_constant_complexdefault ffebld_constant_complex1
764*c87b03e5Sespie #define ffebld_constant_complexdouble ffebld_constant_complex2
765*c87b03e5Sespie #define ffebld_constant_complexquad ffebld_constant_complex3
766*c87b03e5Sespie #define ffebld_constant_copy(c) (c)
767*c87b03e5Sespie #define ffebld_constant_hollerith(c) ((c)->u.hollerith)
768*c87b03e5Sespie #define ffebld_constant_hook(c) ((c)->hook)
769*c87b03e5Sespie #define ffebld_constant_integer1(c) ((c)->u.integer1)
770*c87b03e5Sespie #define ffebld_constant_integer2(c) ((c)->u.integer2)
771*c87b03e5Sespie #define ffebld_constant_integer3(c) ((c)->u.integer3)
772*c87b03e5Sespie #define ffebld_constant_integer4(c) ((c)->u.integer4)
773*c87b03e5Sespie #define ffebld_constant_integer5(c) ((c)->u.integer5)
774*c87b03e5Sespie #define ffebld_constant_integer6(c) ((c)->u.integer6)
775*c87b03e5Sespie #define ffebld_constant_integer7(c) ((c)->u.integer7)
776*c87b03e5Sespie #define ffebld_constant_integer8(c) ((c)->u.integer8)
777*c87b03e5Sespie #define ffebld_constant_integerdefault ffebld_constant_integer1
778*c87b03e5Sespie #define ffebld_constant_is_numeric(c) ((c)->numeric)
779*c87b03e5Sespie #define ffebld_constant_logical1(c) ((c)->u.logical1)
780*c87b03e5Sespie #define ffebld_constant_logical2(c) ((c)->u.logical2)
781*c87b03e5Sespie #define ffebld_constant_logical3(c) ((c)->u.logical3)
782*c87b03e5Sespie #define ffebld_constant_logical4(c) ((c)->u.logical4)
783*c87b03e5Sespie #define ffebld_constant_logical5(c) ((c)->u.logical5)
784*c87b03e5Sespie #define ffebld_constant_logical6(c) ((c)->u.logical6)
785*c87b03e5Sespie #define ffebld_constant_logical7(c) ((c)->u.logical7)
786*c87b03e5Sespie #define ffebld_constant_logical8(c) ((c)->u.logical8)
787*c87b03e5Sespie #define ffebld_constant_logicaldefault ffebld_constant_logical1
788*c87b03e5Sespie #define ffebld_constant_new_characterdefault ffebld_constant_new_character1
789*c87b03e5Sespie #define ffebld_constant_new_characterdefault_val ffebld_constant_new_character1_val
790*c87b03e5Sespie #define ffebld_constant_new_complexdefault ffebld_constant_new_complex1
791*c87b03e5Sespie #define ffebld_constant_new_complexdefault_val ffebld_constant_new_complex1_val
792*c87b03e5Sespie #define ffebld_constant_new_complexdouble ffebld_constant_new_complex2
793*c87b03e5Sespie #define ffebld_constant_new_complexdouble_val ffebld_constant_new_complex2_val
794*c87b03e5Sespie #define ffebld_constant_new_complexquad ffebld_constant_new_complex3
795*c87b03e5Sespie #define ffebld_constant_new_complexquad_valffebld_constant_new_complex3_val
796*c87b03e5Sespie #define ffebld_constant_new_integerdefault ffebld_constant_new_integer1
797*c87b03e5Sespie #define ffebld_constant_new_integerdefault_val ffebld_constant_new_integer1_val
798*c87b03e5Sespie #define ffebld_constant_new_logicaldefault ffebld_constant_new_logical1
799*c87b03e5Sespie #define ffebld_constant_new_logicaldefault_val ffebld_constant_new_logical1_val
800*c87b03e5Sespie #define ffebld_constant_new_realdefault ffebld_constant_new_real1
801*c87b03e5Sespie #define ffebld_constant_new_realdefault_val ffebld_constant_new_real1_val
802*c87b03e5Sespie #define ffebld_constant_new_realdouble ffebld_constant_new_real2
803*c87b03e5Sespie #define ffebld_constant_new_realdouble_val ffebld_constant_new_real2_val
804*c87b03e5Sespie #define ffebld_constant_new_realquad ffebld_constant_new_real3
805*c87b03e5Sespie #define ffebld_constant_new_realquad_val ffebld_constant_new_real3_val
806*c87b03e5Sespie #define ffebld_constant_ptr_to_union(c) (&(c)->u)
807*c87b03e5Sespie #define ffebld_constant_real1(c) ((c)->u.real1)
808*c87b03e5Sespie #define ffebld_constant_real2(c) ((c)->u.real2)
809*c87b03e5Sespie #define ffebld_constant_real3(c) ((c)->u.real3)
810*c87b03e5Sespie #define ffebld_constant_real4(c) ((c)->u.real4)
811*c87b03e5Sespie #define ffebld_constant_real5(c) ((c)->u.real5)
812*c87b03e5Sespie #define ffebld_constant_real6(c) ((c)->u.real6)
813*c87b03e5Sespie #define ffebld_constant_real7(c) ((c)->u.real7)
814*c87b03e5Sespie #define ffebld_constant_real8(c) ((c)->u.real8)
815*c87b03e5Sespie #define ffebld_constant_realdefault ffebld_constant_real1
816*c87b03e5Sespie #define ffebld_constant_realdouble ffebld_constant_real2
817*c87b03e5Sespie #define ffebld_constant_realquad ffebld_constant_real3
818*c87b03e5Sespie #define ffebld_constant_set_hook(c,h) ((c)->hook = (h))
819*c87b03e5Sespie #define ffebld_constant_set_union(c,un) ((c)->u = (un))
820*c87b03e5Sespie #define ffebld_constant_type(c) ((c)->consttype)
821*c87b03e5Sespie #define ffebld_constant_typeless(c) ((c)->u.typeless)
822*c87b03e5Sespie #define ffebld_constant_union(c) ((c)->u)
823*c87b03e5Sespie #define ffebld_conter(b) ((b)->u.conter.expr)
824*c87b03e5Sespie #define ffebld_conter_orig(b) ((b)->u.conter.orig)
825*c87b03e5Sespie #define ffebld_conter_pad(b) ((b)->u.conter.pad)
826*c87b03e5Sespie #define ffebld_conter_set_orig(b,o) ((b)->u.conter.orig = (o))
827*c87b03e5Sespie #define ffebld_conter_set_pad(b,p) ((b)->u.conter.pad = (p))
828*c87b03e5Sespie #define ffebld_copy(b) (b)	/* ~~~Someday really make a copy. */
829*c87b03e5Sespie #define ffebld_cu_ptr_typeless(u) &(u).typeless
830*c87b03e5Sespie #define ffebld_cu_ptr_hollerith(u) &(u).hollerith
831*c87b03e5Sespie #define ffebld_cu_ptr_integer1(u) &(u).integer1
832*c87b03e5Sespie #define ffebld_cu_ptr_integer2(u) &(u).integer2
833*c87b03e5Sespie #define ffebld_cu_ptr_integer3(u) &(u).integer3
834*c87b03e5Sespie #define ffebld_cu_ptr_integer4(u) &(u).integer4
835*c87b03e5Sespie #define ffebld_cu_ptr_integer5(u) &(u).integer5
836*c87b03e5Sespie #define ffebld_cu_ptr_integer6(u) &(u).integer6
837*c87b03e5Sespie #define ffebld_cu_ptr_integer7(u) &(u).integer7
838*c87b03e5Sespie #define ffebld_cu_ptr_integer8(u) &(u).integer8
839*c87b03e5Sespie #define ffebld_cu_ptr_integerdefault ffebld_cu_ptr_integer1
840*c87b03e5Sespie #define ffebld_cu_ptr_logical1(u) &(u).logical1
841*c87b03e5Sespie #define ffebld_cu_ptr_logical2(u) &(u).logical2
842*c87b03e5Sespie #define ffebld_cu_ptr_logical3(u) &(u).logical3
843*c87b03e5Sespie #define ffebld_cu_ptr_logical4(u) &(u).logical4
844*c87b03e5Sespie #define ffebld_cu_ptr_logical5(u) &(u).logical5
845*c87b03e5Sespie #define ffebld_cu_ptr_logical6(u) &(u).logical6
846*c87b03e5Sespie #define ffebld_cu_ptr_logical7(u) &(u).logical7
847*c87b03e5Sespie #define ffebld_cu_ptr_logical8(u) &(u).logical8
848*c87b03e5Sespie #define ffebld_cu_ptr_logicaldefault ffebld_cu_ptr_logical1
849*c87b03e5Sespie #define ffebld_cu_ptr_real1(u) &(u).real1
850*c87b03e5Sespie #define ffebld_cu_ptr_real2(u) &(u).real2
851*c87b03e5Sespie #define ffebld_cu_ptr_real3(u) &(u).real3
852*c87b03e5Sespie #define ffebld_cu_ptr_real4(u) &(u).real4
853*c87b03e5Sespie #define ffebld_cu_ptr_real5(u) &(u).real5
854*c87b03e5Sespie #define ffebld_cu_ptr_real6(u) &(u).real6
855*c87b03e5Sespie #define ffebld_cu_ptr_real7(u) &(u).real7
856*c87b03e5Sespie #define ffebld_cu_ptr_real8(u) &(u).real8
857*c87b03e5Sespie #define ffebld_cu_ptr_realdefault ffebld_cu_ptr_real1
858*c87b03e5Sespie #define ffebld_cu_ptr_realdouble ffebld_cu_ptr_real2
859*c87b03e5Sespie #define ffebld_cu_ptr_realquad ffebld_cu_ptr_real3
860*c87b03e5Sespie #define ffebld_cu_ptr_complex1(u) &(u).complex1
861*c87b03e5Sespie #define ffebld_cu_ptr_complex2(u) &(u).complex2
862*c87b03e5Sespie #define ffebld_cu_ptr_complex3(u) &(u).complex3
863*c87b03e5Sespie #define ffebld_cu_ptr_complex4(u) &(u).complex4
864*c87b03e5Sespie #define ffebld_cu_ptr_complex5(u) &(u).complex5
865*c87b03e5Sespie #define ffebld_cu_ptr_complex6(u) &(u).complex6
866*c87b03e5Sespie #define ffebld_cu_ptr_complex7(u) &(u).complex7
867*c87b03e5Sespie #define ffebld_cu_ptr_complex8(u) &(u).complex8
868*c87b03e5Sespie #define ffebld_cu_ptr_complexdefault ffebld_cu_ptr_complex1
869*c87b03e5Sespie #define ffebld_cu_ptr_complexdouble ffebld_cu_ptr_complex2
870*c87b03e5Sespie #define ffebld_cu_ptr_complexquad ffebld_cu_ptr_complex3
871*c87b03e5Sespie #define ffebld_cu_ptr_character1(u) &(u).character1
872*c87b03e5Sespie #define ffebld_cu_ptr_character2(u) &(u).character2
873*c87b03e5Sespie #define ffebld_cu_ptr_character3(u) &(u).character3
874*c87b03e5Sespie #define ffebld_cu_ptr_character4(u) &(u).character4
875*c87b03e5Sespie #define ffebld_cu_ptr_character5(u) &(u).character5
876*c87b03e5Sespie #define ffebld_cu_ptr_character6(u) &(u).character6
877*c87b03e5Sespie #define ffebld_cu_ptr_character7(u) &(u).character7
878*c87b03e5Sespie #define ffebld_cu_ptr_character8(u) &(u).character8
879*c87b03e5Sespie #define ffebld_cu_val_typeless(u) (u).typeless
880*c87b03e5Sespie #define ffebld_cu_val_hollerith(u) (u).hollerith
881*c87b03e5Sespie #define ffebld_cu_val_integer1(u) (u).integer1
882*c87b03e5Sespie #define ffebld_cu_val_integer2(u) (u).integer2
883*c87b03e5Sespie #define ffebld_cu_val_integer3(u) (u).integer3
884*c87b03e5Sespie #define ffebld_cu_val_integer4(u) (u).integer4
885*c87b03e5Sespie #define ffebld_cu_val_integer5(u) (u).integer5
886*c87b03e5Sespie #define ffebld_cu_val_integer6(u) (u).integer6
887*c87b03e5Sespie #define ffebld_cu_val_integer7(u) (u).integer7
888*c87b03e5Sespie #define ffebld_cu_val_integer8(u) (u).integer8
889*c87b03e5Sespie #define ffebld_cu_val_integerdefault ffebld_cu_val_integer1
890*c87b03e5Sespie #define ffebld_cu_val_logical1(u) (u).logical1
891*c87b03e5Sespie #define ffebld_cu_val_logical2(u) (u).logical2
892*c87b03e5Sespie #define ffebld_cu_val_logical3(u) (u).logical3
893*c87b03e5Sespie #define ffebld_cu_val_logical4(u) (u).logical4
894*c87b03e5Sespie #define ffebld_cu_val_logical5(u) (u).logical5
895*c87b03e5Sespie #define ffebld_cu_val_logical6(u) (u).logical6
896*c87b03e5Sespie #define ffebld_cu_val_logical7(u) (u).logical7
897*c87b03e5Sespie #define ffebld_cu_val_logical8(u) (u).logical8
898*c87b03e5Sespie #define ffebld_cu_val_logicaldefault ffebld_cu_val_logical
899*c87b03e5Sespie #define ffebld_cu_val_real1(u) (u).real1
900*c87b03e5Sespie #define ffebld_cu_val_real2(u) (u).real2
901*c87b03e5Sespie #define ffebld_cu_val_real3(u) (u).real3
902*c87b03e5Sespie #define ffebld_cu_val_real4(u) (u).real4
903*c87b03e5Sespie #define ffebld_cu_val_real5(u) (u).real5
904*c87b03e5Sespie #define ffebld_cu_val_real6(u) (u).real6
905*c87b03e5Sespie #define ffebld_cu_val_real7(u) (u).real7
906*c87b03e5Sespie #define ffebld_cu_val_real8(u) (u).real8
907*c87b03e5Sespie #define ffebld_cu_val_realdefault ffebld_cu_val_real1
908*c87b03e5Sespie #define ffebld_cu_val_realdouble ffebld_cu_val_real2
909*c87b03e5Sespie #define ffebld_cu_val_realquad ffebld_cu_val_real3
910*c87b03e5Sespie #define ffebld_cu_val_complex1(u) (u).complex1
911*c87b03e5Sespie #define ffebld_cu_val_complex2(u) (u).complex2
912*c87b03e5Sespie #define ffebld_cu_val_complex3(u) (u).complex3
913*c87b03e5Sespie #define ffebld_cu_val_complex4(u) (u).complex4
914*c87b03e5Sespie #define ffebld_cu_val_complex5(u) (u).complex5
915*c87b03e5Sespie #define ffebld_cu_val_complex6(u) (u).complex6
916*c87b03e5Sespie #define ffebld_cu_val_complex7(u) (u).complex7
917*c87b03e5Sespie #define ffebld_cu_val_complex8(u) (u).complex8
918*c87b03e5Sespie #define ffebld_cu_val_complexdefault ffebld_cu_val_complex1
919*c87b03e5Sespie #define ffebld_cu_val_complexdouble ffebld_cu_val_complex2
920*c87b03e5Sespie #define ffebld_cu_val_complexquad ffebld_cu_val_complex3
921*c87b03e5Sespie #define ffebld_cu_val_character1(u) (u).character1
922*c87b03e5Sespie #define ffebld_cu_val_character2(u) (u).character2
923*c87b03e5Sespie #define ffebld_cu_val_character3(u) (u).character3
924*c87b03e5Sespie #define ffebld_cu_val_character4(u) (u).character4
925*c87b03e5Sespie #define ffebld_cu_val_character5(u) (u).character5
926*c87b03e5Sespie #define ffebld_cu_val_character6(u) (u).character6
927*c87b03e5Sespie #define ffebld_cu_val_character7(u) (u).character7
928*c87b03e5Sespie #define ffebld_cu_val_character8(u) (u).character8
929*c87b03e5Sespie #define ffebld_end_list(b) (*(b) = NULL)
930*c87b03e5Sespie #define ffebld_head(b) ((b)->u.item.head)
931*c87b03e5Sespie #define ffebld_info(b) ((b)->info)
932*c87b03e5Sespie #define ffebld_init_3()
933*c87b03e5Sespie #define ffebld_init_4()
934*c87b03e5Sespie #define ffebld_init_list(l,b) (*(l) = NULL, *(b) = (l))
935*c87b03e5Sespie #define ffebld_item_hook(b) ((b)->u.item.hook)
936*c87b03e5Sespie #define ffebld_item_set_hook(b,h) ((b)->u.item.hook = (h))
937*c87b03e5Sespie #define ffebld_kind(b) (ffeinfo_kind (ffebld_info ((b))))
938*c87b03e5Sespie #define ffebld_kindtype(b) (ffeinfo_kindtype (ffebld_info ((b))))
939*c87b03e5Sespie #define ffebld_labter(b) ((b)->u.labter)
940*c87b03e5Sespie #define ffebld_labtok(b) ((b)->u.labtok)
941*c87b03e5Sespie #define ffebld_left(b) ((b)->u.nonter.left)
942*c87b03e5Sespie #define ffebld_name_string(n) ((n)->name)
943*c87b03e5Sespie #define ffebld_new()							      \
944*c87b03e5Sespie   ((ffebld) malloc_new_kp(ffebld_pool(), "FFEBLD",sizeof(struct _ffebld_)))
945*c87b03e5Sespie #define ffebld_new_any() ffebld_new_none(FFEBLD_opANY)
946*c87b03e5Sespie #define ffebld_new_conter(c) ffebld_new_conter_with_orig((c),NULL)
947*c87b03e5Sespie #define ffebld_new_star() ffebld_new_none(FFEBLD_opSTAR)
948*c87b03e5Sespie #define ffebld_new_uplus(l) ffebld_new_one(FFEBLD_opUPLUS,(l))
949*c87b03e5Sespie #define ffebld_new_uminus(l) ffebld_new_one(FFEBLD_opUMINUS,(l))
950*c87b03e5Sespie #define ffebld_new_add(l,r) ffebld_new_two(FFEBLD_opADD,(l),(r))
951*c87b03e5Sespie #define ffebld_new_subtract(l,r) ffebld_new_two(FFEBLD_opSUBTRACT,(l),(r))
952*c87b03e5Sespie #define ffebld_new_multiply(l,r) ffebld_new_two(FFEBLD_opMULTIPLY,(l),(r))
953*c87b03e5Sespie #define ffebld_new_divide(l,r) ffebld_new_two(FFEBLD_opDIVIDE,(l),(r))
954*c87b03e5Sespie #define ffebld_new_power(l,r) ffebld_new_two(FFEBLD_opPOWER,(l),(r))
955*c87b03e5Sespie #define ffebld_new_bounds(l,r) ffebld_new_two(FFEBLD_opBOUNDS,(l),(r))
956*c87b03e5Sespie #define ffebld_new_concatenate(l,r) ffebld_new_two(FFEBLD_opCONCATENATE,(l),(r))
957*c87b03e5Sespie #define ffebld_new_not(l) ffebld_new_one(FFEBLD_opNOT,(l))
958*c87b03e5Sespie #define ffebld_new_lt(l,r) ffebld_new_two(FFEBLD_opLT,(l),(r))
959*c87b03e5Sespie #define ffebld_new_le(l,r) ffebld_new_two(FFEBLD_opLE,(l),(r))
960*c87b03e5Sespie #define ffebld_new_eq(l,r) ffebld_new_two(FFEBLD_opEQ,(l),(r))
961*c87b03e5Sespie #define ffebld_new_ne(l,r) ffebld_new_two(FFEBLD_opNE,(l),(r))
962*c87b03e5Sespie #define ffebld_new_gt(l,r) ffebld_new_two(FFEBLD_opGT,(l),(r))
963*c87b03e5Sespie #define ffebld_new_ge(l,r) ffebld_new_two(FFEBLD_opGE,(l),(r))
964*c87b03e5Sespie #define ffebld_new_and(l,r) ffebld_new_two(FFEBLD_opAND,(l),(r))
965*c87b03e5Sespie #define ffebld_new_or(l,r) ffebld_new_two(FFEBLD_opOR,(l),(r))
966*c87b03e5Sespie #define ffebld_new_xor(l,r) ffebld_new_two(FFEBLD_opXOR,(l),(r))
967*c87b03e5Sespie #define ffebld_new_eqv(l,r) ffebld_new_two(FFEBLD_opEQV,(l),(r))
968*c87b03e5Sespie #define ffebld_new_neqv(l,r) ffebld_new_two(FFEBLD_opNEQV,(l),(r))
969*c87b03e5Sespie #define ffebld_new_paren(l) ffebld_new_one(FFEBLD_opPAREN,(l))
970*c87b03e5Sespie #define ffebld_new_repeat(l,r) ffebld_new_two(FFEBLD_opREPEAT,(l),(r))
971*c87b03e5Sespie #define ffebld_new_percent_descr(l) ffebld_new_one(FFEBLD_opPERCENT_DESCR,(l))
972*c87b03e5Sespie #define ffebld_new_percent_loc(l) ffebld_new_one(FFEBLD_opPERCENT_LOC,(l))
973*c87b03e5Sespie #define ffebld_new_percent_ref(l) ffebld_new_one(FFEBLD_opPERCENT_REF,(l))
974*c87b03e5Sespie #define ffebld_new_percent_val(l) ffebld_new_one(FFEBLD_opPERCENT_VAL,(l))
975*c87b03e5Sespie #define ffebld_new_complex(l,r) ffebld_new_two(FFEBLD_opCOMPLEX,(l),(r))
976*c87b03e5Sespie #define ffebld_new_convert(l) ffebld_new_one(FFEBLD_opCONVERT,(l))
977*c87b03e5Sespie #define ffebld_new_funcref(l,r) ffebld_new_two(FFEBLD_opFUNCREF,(l),(r))
978*c87b03e5Sespie #define ffebld_new_subrref(l,r) ffebld_new_two(FFEBLD_opSUBRREF,(l),(r))
979*c87b03e5Sespie #define ffebld_new_arrayref(l,r) ffebld_new_two(FFEBLD_opARRAYREF,(l),(r))
980*c87b03e5Sespie #define ffebld_new_substr(l,r) ffebld_new_two(FFEBLD_opSUBSTR,(l),(r))
981*c87b03e5Sespie #define ffebld_new_impdo(l,r) ffebld_new_two(FFEBLD_opIMPDO,(l),(r))
982*c87b03e5Sespie #define ffebld_nonter_hook(b) ((b)->u.nonter.hook)
983*c87b03e5Sespie #define ffebld_nonter_set_hook(b,h) ((b)->u.nonter.hook = (h))
984*c87b03e5Sespie #define ffebld_op(b) ((b)->op)
985*c87b03e5Sespie #define ffebld_pool() (ffebld_pool_stack_.pool)
986*c87b03e5Sespie #define ffebld_rank(b) (ffeinfo_rank (ffebld_info ((b))))
987*c87b03e5Sespie #define ffebld_right(b) ((b)->u.nonter.right)
988*c87b03e5Sespie #define ffebld_set_accter(b,a) ((b)->u.accter.array = (a))
989*c87b03e5Sespie #define ffebld_set_arrter(b,a) ((b)->u.arrter.array = (a))
990*c87b03e5Sespie #define ffebld_set_conter(b,c) ((b)->u.conter.expr = (c))
991*c87b03e5Sespie #define ffebld_set_info(b,i) ((b)->info = (i))
992*c87b03e5Sespie #define ffebld_set_labter(b,l) ((b)->u.labter = (l))
993*c87b03e5Sespie #define ffebld_set_op(b,o) ((b)->op = (o))
994*c87b03e5Sespie #define ffebld_set_head(b,h) ((b)->u.item.head = (h))
995*c87b03e5Sespie #define ffebld_set_left(b,l) ((b)->u.nonter.left = (l))
996*c87b03e5Sespie #define ffebld_set_right(b,r) ((b)->u.nonter.right = (r))
997*c87b03e5Sespie #define ffebld_set_trail(b,t) ((b)->u.item.trail = (t))
998*c87b03e5Sespie #define ffebld_size(b) (ffeinfo_size (ffebld_info ((b))))
999*c87b03e5Sespie #define ffebld_size_known(b) ffebld_size((b))
1000*c87b03e5Sespie #define ffebld_symter(b) ((b)->u.symter.symbol)
1001*c87b03e5Sespie #define ffebld_symter_generic(b) ((b)->u.symter.generic)
1002*c87b03e5Sespie #define ffebld_symter_doiter(b) ((b)->u.symter.do_iter)
1003*c87b03e5Sespie #define ffebld_symter_implementation(b) ((b)->u.symter.implementation)
1004*c87b03e5Sespie #define ffebld_symter_specific(b) ((b)->u.symter.specific)
1005*c87b03e5Sespie #define ffebld_symter_set_generic(b,g) ((b)->u.symter.generic = (g))
1006*c87b03e5Sespie #define ffebld_symter_set_implementation(b,i) \
1007*c87b03e5Sespie   ((b)->u.symter.implementation = (i))
1008*c87b03e5Sespie #define ffebld_symter_set_is_doiter(b,f) ((b)->u.symter.do_iter = (f))
1009*c87b03e5Sespie #define ffebld_symter_set_specific(b,s) ((b)->u.symter.specific = (s))
1010*c87b03e5Sespie #define ffebld_terminate_0()
1011*c87b03e5Sespie #define ffebld_terminate_1()
1012*c87b03e5Sespie #define ffebld_terminate_2()
1013*c87b03e5Sespie #define ffebld_terminate_3()
1014*c87b03e5Sespie #define ffebld_terminate_4()
1015*c87b03e5Sespie #define ffebld_trail(b) ((b)->u.item.trail)
1016*c87b03e5Sespie #define ffebld_where(b) (ffeinfo_where (ffebld_info ((b))))
1017*c87b03e5Sespie 
1018*c87b03e5Sespie /* End of #include file. */
1019*c87b03e5Sespie 
1020*c87b03e5Sespie #endif /* ! GCC_F_BLD_H */
1021