1 /* top.c -- Implementation File (module.c template V1.0)
2 Copyright (C) 1995, 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
3 Contributed by James Craig Burley.
5 This file is part of GNU Fortran.
7 GNU Fortran is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
12 GNU Fortran is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GNU Fortran; see the file COPYING. If not, write to
19 the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
26 The GNU Fortran Front End.
59 /* Externals defined here. */
61 bool ffe_is_do_internal_checks_
= FALSE
;
62 bool ffe_is_90_
= FFETARGET_defaultIS_90
;
63 bool ffe_is_automatic_
= FFETARGET_defaultIS_AUTOMATIC
;
64 bool ffe_is_backslash_
= FFETARGET_defaultIS_BACKSLASH
;
65 bool ffe_is_emulate_complex_
= FALSE
;
66 bool ffe_is_underscoring_
= FFETARGET_defaultEXTERNAL_UNDERSCORED
67 || FFETARGET_defaultUNDERSCORED_EXTERNAL_UNDERSCORED
;
68 bool ffe_is_second_underscore_
= FFETARGET_defaultUNDERSCORED_EXTERNAL_UNDERSCORED
;
69 bool ffe_is_debug_kludge_
= FALSE
;
70 bool ffe_is_dollar_ok_
= FFETARGET_defaultIS_DOLLAR_OK
;
71 bool ffe_is_f2c_
= FFETARGET_defaultIS_F2C
;
72 bool ffe_is_f2c_library_
= FFETARGET_defaultIS_F2C_LIBRARY
;
73 bool ffe_is_ffedebug_
= FALSE
;
74 bool ffe_is_flatten_arrays_
= FALSE
;
75 bool ffe_is_free_form_
= FFETARGET_defaultIS_FREE_FORM
;
76 bool ffe_is_globals_
= TRUE
;
77 bool ffe_is_init_local_zero_
= FFETARGET_defaultIS_INIT_LOCAL_ZERO
;
78 bool ffe_is_mainprog_
; /* TRUE if current prog unit known to be
80 bool ffe_is_onetrip_
= FALSE
;
81 bool ffe_is_silent_
= TRUE
;
82 bool ffe_is_typeless_boz_
= FALSE
;
83 bool ffe_is_pedantic_
= FFETARGET_defaultIS_PEDANTIC
;
84 bool ffe_is_saveall_
; /* TRUE if mainprog or SAVE (no args) seen. */
85 bool ffe_is_ugly_args_
= TRUE
;
86 bool ffe_is_ugly_assign_
= FALSE
; /* Try and store pointer to ASSIGN labels in INTEGER vars. */
87 bool ffe_is_ugly_assumed_
= FALSE
; /* DIMENSION X([...,]1) => DIMENSION X([...,]*) */
88 bool ffe_is_ugly_comma_
= FALSE
;
89 bool ffe_is_ugly_complex_
= FALSE
;
90 bool ffe_is_ugly_init_
= TRUE
;
91 bool ffe_is_ugly_logint_
= FALSE
;
92 bool ffe_is_version_
= FALSE
;
93 bool ffe_is_vxt_
= FALSE
;
94 bool ffe_is_warn_globals_
= TRUE
;
95 bool ffe_is_warn_implicit_
= FALSE
;
96 bool ffe_is_warn_surprising_
= FALSE
;
97 bool ffe_is_zeros_
= FALSE
;
98 ffeCase ffe_case_intrin_
= FFETARGET_defaultCASE_INTRIN
;
99 ffeCase ffe_case_match_
= FFETARGET_defaultCASE_MATCH
;
100 ffeCase ffe_case_source_
= FFETARGET_defaultCASE_SOURCE
;
101 ffeCase ffe_case_symbol_
= FFETARGET_defaultCASE_SYMBOL
;
102 ffeIntrinsicState ffe_intrinsic_state_badu77_
= FFE_intrinsicstateENABLED
;
103 ffeIntrinsicState ffe_intrinsic_state_gnu_
= FFE_intrinsicstateENABLED
;
104 ffeIntrinsicState ffe_intrinsic_state_f2c_
= FFE_intrinsicstateENABLED
;
105 ffeIntrinsicState ffe_intrinsic_state_f90_
= FFE_intrinsicstateENABLED
;
106 ffeIntrinsicState ffe_intrinsic_state_mil_
= FFE_intrinsicstateENABLED
;
107 ffeIntrinsicState ffe_intrinsic_state_unix_
= FFE_intrinsicstateENABLED
;
108 ffeIntrinsicState ffe_intrinsic_state_vxt_
= FFE_intrinsicstateENABLED
;
109 int ffe_fixed_line_length_
= FFETARGET_defaultFIXED_LINE_LENGTH
;
110 mallocPool ffe_file_pool_
= NULL
;
111 mallocPool ffe_any_unit_pool_
= NULL
;
112 mallocPool ffe_program_unit_pool_
= NULL
;
113 ffeCounter ffe_count_0
= 0;
114 ffeCounter ffe_count_1
= 0;
115 ffeCounter ffe_count_2
= 0;
116 ffeCounter ffe_count_3
= 0;
117 ffeCounter ffe_count_4
= 0;
118 bool ffe_in_0
= FALSE
;
119 bool ffe_in_1
= FALSE
;
120 bool ffe_in_2
= FALSE
;
121 bool ffe_in_3
= FALSE
;
122 bool ffe_in_4
= FALSE
;
124 /* Simple definitions and enumerations. */
127 /* Internal typedefs. */
130 /* Private include files. */
133 /* Internal structure definitions. */
136 /* Static objects accessed by functions in this module. */
139 /* Static functions (internal). */
141 static bool ffe_is_digit_string_ (char *s
);
143 /* Internal macros. */
146 ffe_is_digit_string_ (char *s
)
150 for (p
= s
; ISDIGIT (*p
); ++p
)
153 return (p
!= s
) && (*p
== '\0');
156 /* Handle command-line options. Returns 0 if unrecognized, 1 if
157 recognized and handled. */
160 ffe_decode_option (int argc ATTRIBUTE_UNUSED
, char **argv
)
167 if (strcmp (&opt
[2], "version") == 0)
169 ffe_set_is_version (TRUE
);
170 ffe_set_is_do_internal_checks (TRUE
);
172 else if (strcmp (&opt
[2], "f66") == 0)
174 ffe_set_is_onetrip (TRUE
);
175 ffe_set_is_ugly_assumed (TRUE
);
177 else if (strcmp (&opt
[2], "no-f66") == 0)
179 ffe_set_is_onetrip (FALSE
);
180 ffe_set_is_ugly_assumed (FALSE
);
182 else if (strcmp (&opt
[2], "f77") == 0)
184 ffe_set_is_backslash (TRUE
);
185 ffe_set_is_typeless_boz (FALSE
);
187 else if (strcmp (&opt
[2], "no-f77") == 0)
189 ffe_set_is_backslash (FALSE
);
191 else if (strcmp (&opt
[2], "f90") == 0)
192 ffe_set_is_90 (TRUE
);
193 else if (strcmp (&opt
[2], "no-f90") == 0)
194 ffe_set_is_90 (FALSE
);
195 else if (strcmp (&opt
[2], "automatic") == 0)
196 ffe_set_is_automatic (TRUE
);
197 else if (strcmp (&opt
[2], "no-automatic") == 0)
198 ffe_set_is_automatic (FALSE
);
199 else if (strcmp (&opt
[2], "dollar-ok") == 0)
200 ffe_set_is_dollar_ok (TRUE
);
201 else if (strcmp (&opt
[2], "no-dollar-ok") == 0)
202 ffe_set_is_dollar_ok (FALSE
);
203 else if (strcmp (&opt
[2], "f2c") == 0)
204 ffe_set_is_f2c (TRUE
);
205 else if (strcmp (&opt
[2], "no-f2c") == 0)
206 ffe_set_is_f2c (FALSE
);
207 else if (strcmp (&opt
[2], "f2c-library") == 0)
208 ffe_set_is_f2c_library (TRUE
);
209 else if (strcmp (&opt
[2], "no-f2c-library") == 0)
210 ffe_set_is_f2c_library (FALSE
);
211 else if (strcmp (&opt
[2], "flatten-arrays") == 0)
212 ffe_set_is_flatten_arrays (TRUE
);
213 else if (strcmp (&opt
[2], "no-flatten-arrays") == 0)
214 ffe_set_is_flatten_arrays (FALSE
);
215 else if (strcmp (&opt
[2], "free-form") == 0)
216 ffe_set_is_free_form (TRUE
);
217 else if (strcmp (&opt
[2], "no-free-form") == 0)
218 ffe_set_is_free_form (FALSE
);
219 else if (strcmp (&opt
[2], "fixed-form") == 0)
221 ffe_set_is_free_form (FALSE
);
224 else if (strcmp (&opt
[2], "no-fixed-form") == 0)
225 ffe_set_is_free_form (TRUE
);
226 else if (strcmp (&opt
[2], "pedantic") == 0)
227 ffe_set_is_pedantic (TRUE
);
228 else if (strcmp (&opt
[2], "no-pedantic") == 0)
229 ffe_set_is_pedantic (FALSE
);
230 else if (strcmp (&opt
[2], "vxt") == 0)
231 ffe_set_is_vxt (TRUE
);
232 else if (strcmp (&opt
[2], "not-vxt") == 0)
233 ffe_set_is_vxt (FALSE
);
234 else if (strcmp (&opt
[2], "vxt-not-f90") == 0)
235 warning ("%s no longer supported -- try -fvxt", opt
);
236 else if (strcmp (&opt
[2], "f90-not-vxt") == 0)
237 warning ("%s no longer supported -- try -fno-vxt -ff90", opt
);
238 else if (strcmp (&opt
[2], "no-ugly") == 0)
240 ffe_set_is_ugly_args (FALSE
);
241 ffe_set_is_ugly_assign (FALSE
);
242 ffe_set_is_ugly_assumed (FALSE
);
243 ffe_set_is_ugly_comma (FALSE
);
244 ffe_set_is_ugly_complex (FALSE
);
245 ffe_set_is_ugly_init (FALSE
);
246 ffe_set_is_ugly_logint (FALSE
);
248 else if (strcmp (&opt
[2], "ugly-args") == 0)
249 ffe_set_is_ugly_args (TRUE
);
250 else if (strcmp (&opt
[2], "no-ugly-args") == 0)
251 ffe_set_is_ugly_args (FALSE
);
252 else if (strcmp (&opt
[2], "ugly-assign") == 0)
253 ffe_set_is_ugly_assign (TRUE
);
254 else if (strcmp (&opt
[2], "no-ugly-assign") == 0)
255 ffe_set_is_ugly_assign (FALSE
);
256 else if (strcmp (&opt
[2], "ugly-assumed") == 0)
257 ffe_set_is_ugly_assumed (TRUE
);
258 else if (strcmp (&opt
[2], "no-ugly-assumed") == 0)
259 ffe_set_is_ugly_assumed (FALSE
);
260 else if (strcmp (&opt
[2], "ugly-comma") == 0)
261 ffe_set_is_ugly_comma (TRUE
);
262 else if (strcmp (&opt
[2], "no-ugly-comma") == 0)
263 ffe_set_is_ugly_comma (FALSE
);
264 else if (strcmp (&opt
[2], "ugly-complex") == 0)
265 ffe_set_is_ugly_complex (TRUE
);
266 else if (strcmp (&opt
[2], "no-ugly-complex") == 0)
267 ffe_set_is_ugly_complex (FALSE
);
268 else if (strcmp (&opt
[2], "ugly-init") == 0)
269 ffe_set_is_ugly_init (TRUE
);
270 else if (strcmp (&opt
[2], "no-ugly-init") == 0)
271 ffe_set_is_ugly_init (FALSE
);
272 else if (strcmp (&opt
[2], "ugly-logint") == 0)
273 ffe_set_is_ugly_logint (TRUE
);
274 else if (strcmp (&opt
[2], "no-ugly-logint") == 0)
275 ffe_set_is_ugly_logint (FALSE
);
276 else if (strcmp (&opt
[2], "xyzzy") == 0)
277 ffe_set_is_ffedebug (TRUE
);
278 else if (strcmp (&opt
[2], "no-xyzzy") == 0)
279 ffe_set_is_ffedebug (FALSE
);
280 else if (strcmp (&opt
[2], "init-local-zero") == 0)
281 ffe_set_is_init_local_zero (TRUE
);
282 else if (strcmp (&opt
[2], "no-init-local-zero") == 0)
283 ffe_set_is_init_local_zero (FALSE
);
284 else if (strcmp (&opt
[2], "emulate-complex") == 0)
285 ffe_set_is_emulate_complex (TRUE
);
286 else if (strcmp (&opt
[2], "no-emulate-complex") == 0)
287 ffe_set_is_emulate_complex (FALSE
);
288 else if (strcmp (&opt
[2], "backslash") == 0)
289 ffe_set_is_backslash (TRUE
);
290 else if (strcmp (&opt
[2], "no-backslash") == 0)
291 ffe_set_is_backslash (FALSE
);
292 else if (strcmp (&opt
[2], "underscoring") == 0)
293 ffe_set_is_underscoring (TRUE
);
294 else if (strcmp (&opt
[2], "no-underscoring") == 0)
295 ffe_set_is_underscoring (FALSE
);
296 else if (strcmp (&opt
[2], "second-underscore") == 0)
297 ffe_set_is_second_underscore (TRUE
);
298 else if (strcmp (&opt
[2], "no-second-underscore") == 0)
299 ffe_set_is_second_underscore (FALSE
);
300 else if (strcmp (&opt
[2], "zeros") == 0)
301 ffe_set_is_zeros (TRUE
);
302 else if (strcmp (&opt
[2], "no-zeros") == 0)
303 ffe_set_is_zeros (FALSE
);
304 else if (strcmp (&opt
[2], "debug-kludge") == 0)
305 warning ("%s disabled, use normal debugging flags", opt
);
306 else if (strcmp (&opt
[2], "no-debug-kludge") == 0)
307 warning ("%s disabled, use normal debugging flags", opt
);
308 else if (strcmp (&opt
[2], "onetrip") == 0)
309 ffe_set_is_onetrip (TRUE
);
310 else if (strcmp (&opt
[2], "no-onetrip") == 0)
311 ffe_set_is_onetrip (FALSE
);
312 else if (strcmp (&opt
[2], "silent") == 0)
313 ffe_set_is_silent (TRUE
);
314 else if (strcmp (&opt
[2], "no-silent") == 0)
315 ffe_set_is_silent (FALSE
);
316 else if (strcmp (&opt
[2], "globals") == 0)
317 ffe_set_is_globals (TRUE
);
318 else if (strcmp (&opt
[2], "no-globals") == 0)
319 ffe_set_is_globals (FALSE
);
320 else if (strcmp (&opt
[2], "fortran-bounds-check") == 0)
321 flag_bounds_check
= TRUE
;
322 else if (strcmp (&opt
[2], "no-fortran-bounds-check") == 0)
323 flag_bounds_check
= FALSE
;
324 else if (strcmp (&opt
[2], "typeless-boz") == 0)
325 ffe_set_is_typeless_boz (TRUE
);
326 else if (strcmp (&opt
[2], "no-typeless-boz") == 0)
327 ffe_set_is_typeless_boz (FALSE
);
328 else if (strcmp (&opt
[2], "intrin-case-initcap") == 0)
329 ffe_set_case_intrin (FFE_caseINITCAP
);
330 else if (strcmp (&opt
[2], "intrin-case-upper") == 0)
331 ffe_set_case_intrin (FFE_caseUPPER
);
332 else if (strcmp (&opt
[2], "intrin-case-lower") == 0)
333 ffe_set_case_intrin (FFE_caseLOWER
);
334 else if (strcmp (&opt
[2], "intrin-case-any") == 0)
335 ffe_set_case_intrin (FFE_caseNONE
);
336 else if (strcmp (&opt
[2], "match-case-initcap") == 0)
337 ffe_set_case_match (FFE_caseINITCAP
);
338 else if (strcmp (&opt
[2], "match-case-upper") == 0)
339 ffe_set_case_match (FFE_caseUPPER
);
340 else if (strcmp (&opt
[2], "match-case-lower") == 0)
341 ffe_set_case_match (FFE_caseLOWER
);
342 else if (strcmp (&opt
[2], "match-case-any") == 0)
343 ffe_set_case_match (FFE_caseNONE
);
344 else if (strcmp (&opt
[2], "source-case-upper") == 0)
345 ffe_set_case_source (FFE_caseUPPER
);
346 else if (strcmp (&opt
[2], "source-case-lower") == 0)
347 ffe_set_case_source (FFE_caseLOWER
);
348 else if (strcmp (&opt
[2], "source-case-preserve") == 0)
349 ffe_set_case_source (FFE_caseNONE
);
350 else if (strcmp (&opt
[2], "symbol-case-initcap") == 0)
351 ffe_set_case_symbol (FFE_caseINITCAP
);
352 else if (strcmp (&opt
[2], "symbol-case-upper") == 0)
353 ffe_set_case_symbol (FFE_caseUPPER
);
354 else if (strcmp (&opt
[2], "symbol-case-lower") == 0)
355 ffe_set_case_symbol (FFE_caseLOWER
);
356 else if (strcmp (&opt
[2], "symbol-case-any") == 0)
357 ffe_set_case_symbol (FFE_caseNONE
);
358 else if (strcmp (&opt
[2], "case-strict-upper") == 0)
360 ffe_set_case_intrin (FFE_caseUPPER
);
361 ffe_set_case_match (FFE_caseUPPER
);
362 ffe_set_case_source (FFE_caseNONE
);
363 ffe_set_case_symbol (FFE_caseUPPER
);
365 else if (strcmp (&opt
[2], "case-strict-lower") == 0)
367 ffe_set_case_intrin (FFE_caseLOWER
);
368 ffe_set_case_match (FFE_caseLOWER
);
369 ffe_set_case_source (FFE_caseNONE
);
370 ffe_set_case_symbol (FFE_caseLOWER
);
372 else if (strcmp (&opt
[2], "case-initcap") == 0)
374 ffe_set_case_intrin (FFE_caseINITCAP
);
375 ffe_set_case_match (FFE_caseINITCAP
);
376 ffe_set_case_source (FFE_caseNONE
);
377 ffe_set_case_symbol (FFE_caseINITCAP
);
379 else if (strcmp (&opt
[2], "case-upper") == 0)
381 ffe_set_case_intrin (FFE_caseNONE
);
382 ffe_set_case_match (FFE_caseNONE
);
383 ffe_set_case_source (FFE_caseUPPER
);
384 ffe_set_case_symbol (FFE_caseNONE
);
386 else if (strcmp (&opt
[2], "case-lower") == 0)
388 ffe_set_case_intrin (FFE_caseNONE
);
389 ffe_set_case_match (FFE_caseNONE
);
390 ffe_set_case_source (FFE_caseLOWER
);
391 ffe_set_case_symbol (FFE_caseNONE
);
393 else if (strcmp (&opt
[2], "case-preserve") == 0)
395 ffe_set_case_intrin (FFE_caseNONE
);
396 ffe_set_case_match (FFE_caseNONE
);
397 ffe_set_case_source (FFE_caseNONE
);
398 ffe_set_case_symbol (FFE_caseNONE
);
400 else if (strcmp (&opt
[2], "badu77-intrinsics-delete") == 0)
401 ffe_set_intrinsic_state_badu77 (FFE_intrinsicstateDELETED
);
402 else if (strcmp (&opt
[2], "badu77-intrinsics-hide") == 0)
403 ffe_set_intrinsic_state_badu77 (FFE_intrinsicstateHIDDEN
);
404 else if (strcmp (&opt
[2], "badu77-intrinsics-disable") == 0)
405 ffe_set_intrinsic_state_badu77 (FFE_intrinsicstateDISABLED
);
406 else if (strcmp (&opt
[2], "badu77-intrinsics-enable") == 0)
407 ffe_set_intrinsic_state_badu77 (FFE_intrinsicstateENABLED
);
408 else if (strcmp (&opt
[2], "gnu-intrinsics-delete") == 0)
409 ffe_set_intrinsic_state_gnu (FFE_intrinsicstateDELETED
);
410 else if (strcmp (&opt
[2], "gnu-intrinsics-hide") == 0)
411 ffe_set_intrinsic_state_gnu (FFE_intrinsicstateHIDDEN
);
412 else if (strcmp (&opt
[2], "gnu-intrinsics-disable") == 0)
413 ffe_set_intrinsic_state_gnu (FFE_intrinsicstateDISABLED
);
414 else if (strcmp (&opt
[2], "gnu-intrinsics-enable") == 0)
415 ffe_set_intrinsic_state_gnu (FFE_intrinsicstateENABLED
);
416 else if (strcmp (&opt
[2], "f2c-intrinsics-delete") == 0)
417 ffe_set_intrinsic_state_f2c (FFE_intrinsicstateDELETED
);
418 else if (strcmp (&opt
[2], "f2c-intrinsics-hide") == 0)
419 ffe_set_intrinsic_state_f2c (FFE_intrinsicstateHIDDEN
);
420 else if (strcmp (&opt
[2], "f2c-intrinsics-disable") == 0)
421 ffe_set_intrinsic_state_f2c (FFE_intrinsicstateDISABLED
);
422 else if (strcmp (&opt
[2], "f2c-intrinsics-enable") == 0)
423 ffe_set_intrinsic_state_f2c (FFE_intrinsicstateENABLED
);
424 else if (strcmp (&opt
[2], "f90-intrinsics-delete") == 0)
425 ffe_set_intrinsic_state_f90 (FFE_intrinsicstateDELETED
);
426 else if (strcmp (&opt
[2], "f90-intrinsics-hide") == 0)
427 ffe_set_intrinsic_state_f90 (FFE_intrinsicstateHIDDEN
);
428 else if (strcmp (&opt
[2], "f90-intrinsics-disable") == 0)
429 ffe_set_intrinsic_state_f90 (FFE_intrinsicstateDISABLED
);
430 else if (strcmp (&opt
[2], "f90-intrinsics-enable") == 0)
431 ffe_set_intrinsic_state_f90 (FFE_intrinsicstateENABLED
);
432 else if (strcmp (&opt
[2], "mil-intrinsics-delete") == 0)
433 ffe_set_intrinsic_state_mil (FFE_intrinsicstateDELETED
);
434 else if (strcmp (&opt
[2], "mil-intrinsics-hide") == 0)
435 ffe_set_intrinsic_state_mil (FFE_intrinsicstateHIDDEN
);
436 else if (strcmp (&opt
[2], "mil-intrinsics-disable") == 0)
437 ffe_set_intrinsic_state_mil (FFE_intrinsicstateDISABLED
);
438 else if (strcmp (&opt
[2], "mil-intrinsics-enable") == 0)
439 ffe_set_intrinsic_state_mil (FFE_intrinsicstateENABLED
);
440 else if (strcmp (&opt
[2], "unix-intrinsics-delete") == 0)
441 ffe_set_intrinsic_state_unix (FFE_intrinsicstateDELETED
);
442 else if (strcmp (&opt
[2], "unix-intrinsics-hide") == 0)
443 ffe_set_intrinsic_state_unix (FFE_intrinsicstateHIDDEN
);
444 else if (strcmp (&opt
[2], "unix-intrinsics-disable") == 0)
445 ffe_set_intrinsic_state_unix (FFE_intrinsicstateDISABLED
);
446 else if (strcmp (&opt
[2], "unix-intrinsics-enable") == 0)
447 ffe_set_intrinsic_state_unix (FFE_intrinsicstateENABLED
);
448 else if (strcmp (&opt
[2], "vxt-intrinsics-delete") == 0)
449 ffe_set_intrinsic_state_vxt (FFE_intrinsicstateDELETED
);
450 else if (strcmp (&opt
[2], "vxt-intrinsics-hide") == 0)
451 ffe_set_intrinsic_state_vxt (FFE_intrinsicstateHIDDEN
);
452 else if (strcmp (&opt
[2], "vxt-intrinsics-disable") == 0)
453 ffe_set_intrinsic_state_vxt (FFE_intrinsicstateDISABLED
);
454 else if (strcmp (&opt
[2], "vxt-intrinsics-enable") == 0)
455 ffe_set_intrinsic_state_vxt (FFE_intrinsicstateENABLED
);
456 else if (strncmp (&opt
[2], "fixed-line-length-",
457 strlen ("fixed-line-length-")) == 0)
459 char *len
= &opt
[2] + strlen ("fixed-line-length-");
461 if (strcmp (len
, "none") == 0)
463 ffe_set_fixed_line_length (0);
466 else if (ffe_is_digit_string_ (len
))
468 ffe_set_fixed_line_length (atol (len
));
477 else if (opt
[1] == 'W')
479 if (!strcmp (&opt
[2], "comment"))
480 ; /* cpp handles this one. */
481 else if (!strcmp (&opt
[2], "no-comment"))
482 ; /* cpp handles this one. */
483 else if (!strcmp (&opt
[2], "comments"))
484 ; /* cpp handles this one. */
485 else if (!strcmp (&opt
[2], "no-comments"))
486 ; /* cpp handles this one. */
487 else if (!strcmp (&opt
[2], "trigraphs"))
488 ; /* cpp handles this one. */
489 else if (!strcmp (&opt
[2], "no-trigraphs"))
490 ; /* cpp handles this one. */
491 else if (!strcmp (&opt
[2], "import"))
492 ; /* cpp handles this one. */
493 else if (!strcmp (&opt
[2], "no-import"))
494 ; /* cpp handles this one. */
495 else if (!strcmp (&opt
[2], "globals"))
496 ffe_set_is_warn_globals (TRUE
);
497 else if (!strcmp (&opt
[2], "no-globals"))
498 ffe_set_is_warn_globals (FALSE
);
499 else if (!strcmp (&opt
[2], "implicit"))
500 ffe_set_is_warn_implicit (TRUE
);
501 else if (!strcmp (&opt
[2], "no-implicit"))
502 ffe_set_is_warn_implicit (FALSE
);
503 else if (!strcmp (&opt
[2], "surprising"))
504 ffe_set_is_warn_surprising (TRUE
);
505 else if (!strcmp (&opt
[2], "no-surprising"))
506 ffe_set_is_warn_surprising (FALSE
);
507 else if (!strcmp (&opt
[2], "all"))
509 /* We save the value of warn_uninitialized, since if they put
510 -Wuninitialized on the command line, we need to generate a
511 warning about not using it without also specifying -O. */
512 if (warn_uninitialized
!= 1)
513 warn_uninitialized
= 2;
519 else if (opt
[1] == 'I')
520 return ffecom_decode_include_option (&opt
[2]);
527 /* Run the FFE on a source file (not an INCLUDEd file).
529 Runs the whole shebang.
531 Prepare and invoke the appropriate lexer. */
534 ffe_file (ffewhereFile wf
, FILE *f
)
537 ffelex_set_handler ((ffelexHandler
) ffest_first
);
538 ffewhere_file_set (wf
, TRUE
, 0);
539 if (ffe_is_free_form_
)
540 ffelex_file_free (wf
, f
);
542 ffelex_file_fixed (wf
, f
);
547 /* ffe_init_0 -- Initialize the FFE per image invocation
551 Performs per-image invocation. */
582 /* ffe_init_1 -- Initialize the FFE per source file
586 Performs per-source-file invocation (not including INCLUDEd files). */
594 assert (ffe_file_pool_
== NULL
);
595 ffe_file_pool_
= malloc_pool_new ("File", malloc_pool_image (), 1024);
622 /* ffe_init_2 -- Initialize the FFE per outer program unit
626 Performs per-program-unit invocation. */
634 assert (ffe_program_unit_pool_
== NULL
);
635 ffe_program_unit_pool_
= malloc_pool_new ("Program unit", ffe_file_pool_
, 1024);
636 ffe_is_mainprog_
= FALSE
;
637 ffe_is_saveall_
= !ffe_is_automatic_
;
664 /* ffe_init_3 -- Initialize the FFE per any program unit
668 Performs per-any-unit initialization; does NOT do
669 per-statement-function-definition initialization (i.e. the chain
670 of inits, from 0-3, breaks here; level 4 must be invoked independently). */
678 assert (ffe_any_unit_pool_
== NULL
);
679 ffe_any_unit_pool_
= malloc_pool_new ("Any unit", ffe_program_unit_pool_
, 1024);
704 /* ffe_init_4 -- Initialize the FFE per statement function definition
737 /* ffe_terminate_0 -- Terminate the FFE prior to image termination
739 ffe_terminate_0(); */
747 ffebad_terminate_0 ();
748 ffebit_terminate_0 ();
749 ffebld_terminate_0 ();
750 ffecom_terminate_0 ();
751 ffedata_terminate_0 ();
752 ffeequiv_terminate_0 ();
753 ffeexpr_terminate_0 ();
754 ffeglobal_terminate_0 ();
755 ffeimplic_terminate_0 ();
756 ffeinfo_terminate_0 ();
757 ffeintrin_terminate_0 ();
758 ffelab_terminate_0 ();
759 ffelex_terminate_0 ();
760 ffename_terminate_0 ();
761 ffesrc_terminate_0 ();
762 ffest_terminate_0 ();
763 ffestorag_terminate_0 ();
764 ffesymbol_terminate_0 ();
765 ffetarget_terminate_0 ();
766 ffetype_terminate_0 ();
767 ffewhere_terminate_0 ();
770 /* ffe_terminate_1 -- Terminate the FFE after seeing source file EOF
772 ffe_terminate_1(); */
782 ffebad_terminate_1 ();
783 ffebit_terminate_1 ();
784 ffebld_terminate_1 ();
785 ffecom_terminate_1 ();
786 ffedata_terminate_1 ();
787 ffeequiv_terminate_1 ();
788 ffeexpr_terminate_1 ();
789 ffeglobal_terminate_1 ();
790 ffeimplic_terminate_1 ();
791 ffeinfo_terminate_1 ();
792 ffeintrin_terminate_1 ();
793 ffelab_terminate_1 ();
794 ffelex_terminate_1 ();
795 ffename_terminate_1 ();
796 ffesrc_terminate_1 ();
797 ffest_terminate_1 ();
798 ffestorag_terminate_1 ();
799 ffesymbol_terminate_1 ();
800 ffetarget_terminate_1 ();
801 ffetype_terminate_1 ();
802 ffewhere_terminate_1 ();
804 assert (ffe_file_pool_
!= NULL
);
805 malloc_pool_kill (ffe_file_pool_
);
806 ffe_file_pool_
= NULL
;
809 /* ffe_terminate_2 -- Terminate the FFE after seeing outer program unit END
811 ffe_terminate_2(); */
821 ffebad_terminate_2 ();
822 ffebit_terminate_2 ();
823 ffebld_terminate_2 ();
824 ffecom_terminate_2 ();
825 ffedata_terminate_2 ();
826 ffeequiv_terminate_2 ();
827 ffeexpr_terminate_2 ();
828 ffeglobal_terminate_2 ();
829 ffeimplic_terminate_2 ();
830 ffeinfo_terminate_2 ();
831 ffeintrin_terminate_2 ();
832 ffelab_terminate_2 ();
833 ffelex_terminate_2 ();
834 ffename_terminate_2 ();
835 ffesrc_terminate_2 ();
836 ffest_terminate_2 ();
837 ffestorag_terminate_2 ();
838 ffesymbol_terminate_2 ();
839 ffetarget_terminate_2 ();
840 ffetype_terminate_2 ();
841 ffewhere_terminate_2 ();
843 assert (ffe_program_unit_pool_
!= NULL
);
844 malloc_pool_kill (ffe_program_unit_pool_
);
845 ffe_program_unit_pool_
= NULL
;
848 /* ffe_terminate_3 -- Terminate the FFE after seeing any program unit END
850 ffe_terminate_3(); */
858 ffebad_terminate_3 ();
859 ffebit_terminate_3 ();
860 ffebld_terminate_3 ();
861 ffecom_terminate_3 ();
862 ffedata_terminate_3 ();
863 ffeequiv_terminate_3 ();
864 ffeexpr_terminate_3 ();
865 ffeglobal_terminate_3 ();
866 ffeimplic_terminate_3 ();
867 ffeinfo_terminate_3 ();
868 ffeintrin_terminate_3 ();
869 ffelab_terminate_3 ();
870 ffelex_terminate_3 ();
871 ffename_terminate_3 ();
872 ffesrc_terminate_3 ();
873 ffest_terminate_3 ();
874 ffestorag_terminate_3 ();
875 ffesymbol_terminate_3 ();
876 ffetarget_terminate_3 ();
877 ffetype_terminate_3 ();
878 ffewhere_terminate_3 ();
880 assert (ffe_any_unit_pool_
!= NULL
);
881 malloc_pool_kill (ffe_any_unit_pool_
);
882 ffe_any_unit_pool_
= NULL
;
885 /* ffe_terminate_4 -- Terminate the FFE after seeing sfunc def expression
887 ffe_terminate_4(); */
894 ffebad_terminate_4 ();
895 ffebit_terminate_4 ();
896 ffebld_terminate_4 ();
897 ffecom_terminate_4 ();
898 ffedata_terminate_4 ();
899 ffeequiv_terminate_4 ();
900 ffeexpr_terminate_4 ();
901 ffeglobal_terminate_4 ();
902 ffeimplic_terminate_4 ();
903 ffeinfo_terminate_4 ();
904 ffeintrin_terminate_4 ();
905 ffelab_terminate_4 ();
906 ffelex_terminate_4 ();
907 ffename_terminate_4 ();
908 ffesrc_terminate_4 ();
909 ffest_terminate_4 ();
910 ffestorag_terminate_4 ();
911 ffesymbol_terminate_4 ();
912 ffetarget_terminate_4 ();
913 ffetype_terminate_4 ();
914 ffewhere_terminate_4 ();