00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "proj.h"
00034 #include "top.h"
00035 #include "bad.h"
00036 #include "bit.h"
00037 #include "bld.h"
00038 #include "com.h"
00039 #include "data.h"
00040 #include "equiv.h"
00041 #include "expr.h"
00042 #include "global.h"
00043 #include "implic.h"
00044 #include "info.h"
00045 #include "intrin.h"
00046 #include "lab.h"
00047 #include "lex.h"
00048 #include "malloc.h"
00049 #include "name.h"
00050 #include "src.h"
00051 #include "st.h"
00052 #include "storag.h"
00053 #include "symbol.h"
00054 #include "target.h"
00055 #include "where.h"
00056 #include "flags.h"
00057 #include "toplev.h"
00058
00059
00060
00061 int flag_traditional;
00062 bool ffe_is_do_internal_checks_ = FALSE;
00063 bool ffe_is_90_ = FFETARGET_defaultIS_90;
00064 bool ffe_is_automatic_ = FFETARGET_defaultIS_AUTOMATIC;
00065 bool ffe_is_backslash_ = FFETARGET_defaultIS_BACKSLASH;
00066 bool ffe_is_emulate_complex_ = FALSE;
00067 bool ffe_is_underscoring_ = FFETARGET_defaultEXTERNAL_UNDERSCORED
00068 || FFETARGET_defaultUNDERSCORED_EXTERNAL_UNDERSCORED;
00069 bool ffe_is_second_underscore_ = FFETARGET_defaultUNDERSCORED_EXTERNAL_UNDERSCORED;
00070 bool ffe_is_debug_kludge_ = FALSE;
00071 bool ffe_is_dollar_ok_ = FFETARGET_defaultIS_DOLLAR_OK;
00072 bool ffe_is_f2c_ = FFETARGET_defaultIS_F2C;
00073 bool ffe_is_f2c_library_ = FFETARGET_defaultIS_F2C_LIBRARY;
00074 bool ffe_is_ffedebug_ = FALSE;
00075 bool ffe_is_flatten_arrays_ = FALSE;
00076 bool ffe_is_free_form_ = FFETARGET_defaultIS_FREE_FORM;
00077 bool ffe_is_globals_ = TRUE;
00078 bool ffe_is_init_local_zero_ = FFETARGET_defaultIS_INIT_LOCAL_ZERO;
00079 bool ffe_is_mainprog_;
00080
00081 bool ffe_is_onetrip_ = FALSE;
00082 bool ffe_is_silent_ = TRUE;
00083 bool ffe_is_typeless_boz_ = FALSE;
00084 bool ffe_is_pedantic_ = FFETARGET_defaultIS_PEDANTIC;
00085 bool ffe_is_saveall_;
00086 bool ffe_is_ugly_args_ = TRUE;
00087 bool ffe_is_ugly_assign_ = FALSE;
00088 bool ffe_is_ugly_assumed_ = FALSE;
00089 bool ffe_is_ugly_comma_ = FALSE;
00090 bool ffe_is_ugly_complex_ = FALSE;
00091 bool ffe_is_ugly_init_ = TRUE;
00092 bool ffe_is_ugly_logint_ = FALSE;
00093 bool ffe_is_version_ = FALSE;
00094 bool ffe_is_vxt_ = FALSE;
00095 bool ffe_is_warn_globals_ = TRUE;
00096 bool ffe_is_warn_implicit_ = FALSE;
00097 bool ffe_is_warn_surprising_ = FALSE;
00098 bool ffe_is_zeros_ = FALSE;
00099 ffeCase ffe_case_intrin_ = FFETARGET_defaultCASE_INTRIN;
00100 ffeCase ffe_case_match_ = FFETARGET_defaultCASE_MATCH;
00101 ffeCase ffe_case_source_ = FFETARGET_defaultCASE_SOURCE;
00102 ffeCase ffe_case_symbol_ = FFETARGET_defaultCASE_SYMBOL;
00103 ffeIntrinsicState ffe_intrinsic_state_badu77_ = FFE_intrinsicstateENABLED;
00104 ffeIntrinsicState ffe_intrinsic_state_gnu_ = FFE_intrinsicstateENABLED;
00105 ffeIntrinsicState ffe_intrinsic_state_f2c_ = FFE_intrinsicstateENABLED;
00106 ffeIntrinsicState ffe_intrinsic_state_f90_ = FFE_intrinsicstateENABLED;
00107 ffeIntrinsicState ffe_intrinsic_state_mil_ = FFE_intrinsicstateENABLED;
00108 ffeIntrinsicState ffe_intrinsic_state_unix_ = FFE_intrinsicstateENABLED;
00109 ffeIntrinsicState ffe_intrinsic_state_vxt_ = FFE_intrinsicstateENABLED;
00110 int ffe_fixed_line_length_ = FFETARGET_defaultFIXED_LINE_LENGTH;
00111 mallocPool ffe_file_pool_ = NULL;
00112 mallocPool ffe_any_unit_pool_ = NULL;
00113 mallocPool ffe_program_unit_pool_ = NULL;
00114 ffeCounter ffe_count_0 = 0;
00115 ffeCounter ffe_count_1 = 0;
00116 ffeCounter ffe_count_2 = 0;
00117 ffeCounter ffe_count_3 = 0;
00118 ffeCounter ffe_count_4 = 0;
00119 bool ffe_in_0 = FALSE;
00120 bool ffe_in_1 = FALSE;
00121 bool ffe_in_2 = FALSE;
00122 bool ffe_in_3 = FALSE;
00123 bool ffe_in_4 = FALSE;
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142 static bool ffe_is_digit_string_ (char *s);
00143
00144
00145
00146 static bool
00147 ffe_is_digit_string_ (char *s)
00148 {
00149 char *p;
00150
00151 for (p = s; ISDIGIT (*p); ++p)
00152 ;
00153
00154 return (p != s) && (*p == '\0');
00155 }
00156
00157
00158
00159
00160 int
00161 ffe_decode_option (argc, argv)
00162 int argc ATTRIBUTE_UNUSED;
00163 char **argv;
00164 {
00165 char *opt = argv[0];
00166 if (opt[0] != '-')
00167 return 0;
00168 if (opt[1] == 'f')
00169 {
00170 if (strcmp (&opt[2], "version") == 0)
00171 {
00172 ffe_set_is_version (TRUE);
00173 ffe_set_is_do_internal_checks (TRUE);
00174 }
00175 else if (strcmp (&opt[2], "f66") == 0)
00176 {
00177 ffe_set_is_onetrip (TRUE);
00178 ffe_set_is_ugly_assumed (TRUE);
00179 }
00180 else if (strcmp (&opt[2], "no-f66") == 0)
00181 {
00182 ffe_set_is_onetrip (FALSE);
00183 ffe_set_is_ugly_assumed (FALSE);
00184 }
00185 else if (strcmp (&opt[2], "f77") == 0)
00186 {
00187 ffe_set_is_backslash (TRUE);
00188 ffe_set_is_typeless_boz (FALSE);
00189 }
00190 else if (strcmp (&opt[2], "no-f77") == 0)
00191 {
00192 ffe_set_is_backslash (FALSE);
00193 }
00194 else if (strcmp (&opt[2], "f90") == 0)
00195 ffe_set_is_90 (TRUE);
00196 else if (strcmp (&opt[2], "no-f90") == 0)
00197 ffe_set_is_90 (FALSE);
00198 else if (strcmp (&opt[2], "automatic") == 0)
00199 ffe_set_is_automatic (TRUE);
00200 else if (strcmp (&opt[2], "no-automatic") == 0)
00201 ffe_set_is_automatic (FALSE);
00202 else if (strcmp (&opt[2], "dollar-ok") == 0)
00203 ffe_set_is_dollar_ok (TRUE);
00204 else if (strcmp (&opt[2], "no-dollar-ok") == 0)
00205 ffe_set_is_dollar_ok (FALSE);
00206 else if (strcmp (&opt[2], "f2c") == 0)
00207 ffe_set_is_f2c (TRUE);
00208 else if (strcmp (&opt[2], "no-f2c") == 0)
00209 ffe_set_is_f2c (FALSE);
00210 else if (strcmp (&opt[2], "f2c-library") == 0)
00211 ffe_set_is_f2c_library (TRUE);
00212 else if (strcmp (&opt[2], "no-f2c-library") == 0)
00213 ffe_set_is_f2c_library (FALSE);
00214 else if (strcmp (&opt[2], "flatten-arrays") == 0)
00215 ffe_set_is_flatten_arrays (TRUE);
00216 else if (strcmp (&opt[2], "no-flatten-arrays") == 0)
00217 ffe_set_is_flatten_arrays (FALSE);
00218 else if (strcmp (&opt[2], "free-form") == 0)
00219 ffe_set_is_free_form (TRUE);
00220 else if (strcmp (&opt[2], "no-free-form") == 0)
00221 ffe_set_is_free_form (FALSE);
00222 else if (strcmp (&opt[2], "fixed-form") == 0)
00223 {
00224 ffe_set_is_free_form (FALSE);
00225 return -1;
00226 }
00227 else if (strcmp (&opt[2], "no-fixed-form") == 0)
00228 ffe_set_is_free_form (TRUE);
00229 else if (strcmp (&opt[2], "pedantic") == 0)
00230 ffe_set_is_pedantic (TRUE);
00231 else if (strcmp (&opt[2], "no-pedantic") == 0)
00232 ffe_set_is_pedantic (FALSE);
00233 else if (strcmp (&opt[2], "vxt") == 0)
00234 ffe_set_is_vxt (TRUE);
00235 else if (strcmp (&opt[2], "not-vxt") == 0)
00236 ffe_set_is_vxt (FALSE);
00237 else if (strcmp (&opt[2], "vxt-not-f90") == 0)
00238 warning ("%s no longer supported -- try -fvxt", opt);
00239 else if (strcmp (&opt[2], "f90-not-vxt") == 0)
00240 warning ("%s no longer supported -- try -fno-vxt -ff90", opt);
00241 else if (strcmp (&opt[2], "no-ugly") == 0)
00242 {
00243 ffe_set_is_ugly_args (FALSE);
00244 ffe_set_is_ugly_assign (FALSE);
00245 ffe_set_is_ugly_assumed (FALSE);
00246 ffe_set_is_ugly_comma (FALSE);
00247 ffe_set_is_ugly_complex (FALSE);
00248 ffe_set_is_ugly_init (FALSE);
00249 ffe_set_is_ugly_logint (FALSE);
00250 }
00251 else if (strcmp (&opt[2], "ugly-args") == 0)
00252 ffe_set_is_ugly_args (TRUE);
00253 else if (strcmp (&opt[2], "no-ugly-args") == 0)
00254 ffe_set_is_ugly_args (FALSE);
00255 else if (strcmp (&opt[2], "ugly-assign") == 0)
00256 ffe_set_is_ugly_assign (TRUE);
00257 else if (strcmp (&opt[2], "no-ugly-assign") == 0)
00258 ffe_set_is_ugly_assign (FALSE);
00259 else if (strcmp (&opt[2], "ugly-assumed") == 0)
00260 ffe_set_is_ugly_assumed (TRUE);
00261 else if (strcmp (&opt[2], "no-ugly-assumed") == 0)
00262 ffe_set_is_ugly_assumed (FALSE);
00263 else if (strcmp (&opt[2], "ugly-comma") == 0)
00264 ffe_set_is_ugly_comma (TRUE);
00265 else if (strcmp (&opt[2], "no-ugly-comma") == 0)
00266 ffe_set_is_ugly_comma (FALSE);
00267 else if (strcmp (&opt[2], "ugly-complex") == 0)
00268 ffe_set_is_ugly_complex (TRUE);
00269 else if (strcmp (&opt[2], "no-ugly-complex") == 0)
00270 ffe_set_is_ugly_complex (FALSE);
00271 else if (strcmp (&opt[2], "ugly-init") == 0)
00272 ffe_set_is_ugly_init (TRUE);
00273 else if (strcmp (&opt[2], "no-ugly-init") == 0)
00274 ffe_set_is_ugly_init (FALSE);
00275 else if (strcmp (&opt[2], "ugly-logint") == 0)
00276 ffe_set_is_ugly_logint (TRUE);
00277 else if (strcmp (&opt[2], "no-ugly-logint") == 0)
00278 ffe_set_is_ugly_logint (FALSE);
00279 else if (strcmp (&opt[2], "xyzzy") == 0)
00280 ffe_set_is_ffedebug (TRUE);
00281 else if (strcmp (&opt[2], "no-xyzzy") == 0)
00282 ffe_set_is_ffedebug (FALSE);
00283 else if (strcmp (&opt[2], "init-local-zero") == 0)
00284 ffe_set_is_init_local_zero (TRUE);
00285 else if (strcmp (&opt[2], "no-init-local-zero") == 0)
00286 ffe_set_is_init_local_zero (FALSE);
00287 else if (strcmp (&opt[2], "emulate-complex") == 0)
00288 ffe_set_is_emulate_complex (TRUE);
00289 else if (strcmp (&opt[2], "no-emulate-complex") == 0)
00290 ffe_set_is_emulate_complex (FALSE);
00291 else if (strcmp (&opt[2], "backslash") == 0)
00292 ffe_set_is_backslash (TRUE);
00293 else if (strcmp (&opt[2], "no-backslash") == 0)
00294 ffe_set_is_backslash (FALSE);
00295 else if (strcmp (&opt[2], "underscoring") == 0)
00296 ffe_set_is_underscoring (TRUE);
00297 else if (strcmp (&opt[2], "no-underscoring") == 0)
00298 ffe_set_is_underscoring (FALSE);
00299 else if (strcmp (&opt[2], "second-underscore") == 0)
00300 ffe_set_is_second_underscore (TRUE);
00301 else if (strcmp (&opt[2], "no-second-underscore") == 0)
00302 ffe_set_is_second_underscore (FALSE);
00303 else if (strcmp (&opt[2], "zeros") == 0)
00304 ffe_set_is_zeros (TRUE);
00305 else if (strcmp (&opt[2], "no-zeros") == 0)
00306 ffe_set_is_zeros (FALSE);
00307 else if (strcmp (&opt[2], "debug-kludge") == 0)
00308 warning ("%s disabled, use normal debugging flags", opt);
00309 else if (strcmp (&opt[2], "no-debug-kludge") == 0)
00310 warning ("%s disabled, use normal debugging flags", opt);
00311 else if (strcmp (&opt[2], "onetrip") == 0)
00312 ffe_set_is_onetrip (TRUE);
00313 else if (strcmp (&opt[2], "no-onetrip") == 0)
00314 ffe_set_is_onetrip (FALSE);
00315 else if (strcmp (&opt[2], "silent") == 0)
00316 ffe_set_is_silent (TRUE);
00317 else if (strcmp (&opt[2], "no-silent") == 0)
00318 ffe_set_is_silent (FALSE);
00319 else if (strcmp (&opt[2], "globals") == 0)
00320 ffe_set_is_globals (TRUE);
00321 else if (strcmp (&opt[2], "no-globals") == 0)
00322 ffe_set_is_globals (FALSE);
00323 else if (strcmp (&opt[2], "fortran-bounds-check") == 0)
00324 flag_bounds_check = TRUE;
00325 else if (strcmp (&opt[2], "no-fortran-bounds-check") == 0)
00326 flag_bounds_check = FALSE;
00327 else if (strcmp (&opt[2], "typeless-boz") == 0)
00328 ffe_set_is_typeless_boz (TRUE);
00329 else if (strcmp (&opt[2], "no-typeless-boz") == 0)
00330 ffe_set_is_typeless_boz (FALSE);
00331 else if (strcmp (&opt[2], "intrin-case-initcap") == 0)
00332 ffe_set_case_intrin (FFE_caseINITCAP);
00333 else if (strcmp (&opt[2], "intrin-case-upper") == 0)
00334 ffe_set_case_intrin (FFE_caseUPPER);
00335 else if (strcmp (&opt[2], "intrin-case-lower") == 0)
00336 ffe_set_case_intrin (FFE_caseLOWER);
00337 else if (strcmp (&opt[2], "intrin-case-any") == 0)
00338 ffe_set_case_intrin (FFE_caseNONE);
00339 else if (strcmp (&opt[2], "match-case-initcap") == 0)
00340 ffe_set_case_match (FFE_caseINITCAP);
00341 else if (strcmp (&opt[2], "match-case-upper") == 0)
00342 ffe_set_case_match (FFE_caseUPPER);
00343 else if (strcmp (&opt[2], "match-case-lower") == 0)
00344 ffe_set_case_match (FFE_caseLOWER);
00345 else if (strcmp (&opt[2], "match-case-any") == 0)
00346 ffe_set_case_match (FFE_caseNONE);
00347 else if (strcmp (&opt[2], "source-case-upper") == 0)
00348 ffe_set_case_source (FFE_caseUPPER);
00349 else if (strcmp (&opt[2], "source-case-lower") == 0)
00350 ffe_set_case_source (FFE_caseLOWER);
00351 else if (strcmp (&opt[2], "source-case-preserve") == 0)
00352 ffe_set_case_source (FFE_caseNONE);
00353 else if (strcmp (&opt[2], "symbol-case-initcap") == 0)
00354 ffe_set_case_symbol (FFE_caseINITCAP);
00355 else if (strcmp (&opt[2], "symbol-case-upper") == 0)
00356 ffe_set_case_symbol (FFE_caseUPPER);
00357 else if (strcmp (&opt[2], "symbol-case-lower") == 0)
00358 ffe_set_case_symbol (FFE_caseLOWER);
00359 else if (strcmp (&opt[2], "symbol-case-any") == 0)
00360 ffe_set_case_symbol (FFE_caseNONE);
00361 else if (strcmp (&opt[2], "case-strict-upper") == 0)
00362 {
00363 ffe_set_case_intrin (FFE_caseUPPER);
00364 ffe_set_case_match (FFE_caseUPPER);
00365 ffe_set_case_source (FFE_caseNONE);
00366 ffe_set_case_symbol (FFE_caseUPPER);
00367 }
00368 else if (strcmp (&opt[2], "case-strict-lower") == 0)
00369 {
00370 ffe_set_case_intrin (FFE_caseLOWER);
00371 ffe_set_case_match (FFE_caseLOWER);
00372 ffe_set_case_source (FFE_caseNONE);
00373 ffe_set_case_symbol (FFE_caseLOWER);
00374 }
00375 else if (strcmp (&opt[2], "case-initcap") == 0)
00376 {
00377 ffe_set_case_intrin (FFE_caseINITCAP);
00378 ffe_set_case_match (FFE_caseINITCAP);
00379 ffe_set_case_source (FFE_caseNONE);
00380 ffe_set_case_symbol (FFE_caseINITCAP);
00381 }
00382 else if (strcmp (&opt[2], "case-upper") == 0)
00383 {
00384 ffe_set_case_intrin (FFE_caseNONE);
00385 ffe_set_case_match (FFE_caseNONE);
00386 ffe_set_case_source (FFE_caseUPPER);
00387 ffe_set_case_symbol (FFE_caseNONE);
00388 }
00389 else if (strcmp (&opt[2], "case-lower") == 0)
00390 {
00391 ffe_set_case_intrin (FFE_caseNONE);
00392 ffe_set_case_match (FFE_caseNONE);
00393 ffe_set_case_source (FFE_caseLOWER);
00394 ffe_set_case_symbol (FFE_caseNONE);
00395 }
00396 else if (strcmp (&opt[2], "case-preserve") == 0)
00397 {
00398 ffe_set_case_intrin (FFE_caseNONE);
00399 ffe_set_case_match (FFE_caseNONE);
00400 ffe_set_case_source (FFE_caseNONE);
00401 ffe_set_case_symbol (FFE_caseNONE);
00402 }
00403 else if (strcmp (&opt[2], "badu77-intrinsics-delete") == 0)
00404 ffe_set_intrinsic_state_badu77 (FFE_intrinsicstateDELETED);
00405 else if (strcmp (&opt[2], "badu77-intrinsics-hide") == 0)
00406 ffe_set_intrinsic_state_badu77 (FFE_intrinsicstateHIDDEN);
00407 else if (strcmp (&opt[2], "badu77-intrinsics-disable") == 0)
00408 ffe_set_intrinsic_state_badu77 (FFE_intrinsicstateDISABLED);
00409 else if (strcmp (&opt[2], "badu77-intrinsics-enable") == 0)
00410 ffe_set_intrinsic_state_badu77 (FFE_intrinsicstateENABLED);
00411 else if (strcmp (&opt[2], "gnu-intrinsics-delete") == 0)
00412 ffe_set_intrinsic_state_gnu (FFE_intrinsicstateDELETED);
00413 else if (strcmp (&opt[2], "gnu-intrinsics-hide") == 0)
00414 ffe_set_intrinsic_state_gnu (FFE_intrinsicstateHIDDEN);
00415 else if (strcmp (&opt[2], "gnu-intrinsics-disable") == 0)
00416 ffe_set_intrinsic_state_gnu (FFE_intrinsicstateDISABLED);
00417 else if (strcmp (&opt[2], "gnu-intrinsics-enable") == 0)
00418 ffe_set_intrinsic_state_gnu (FFE_intrinsicstateENABLED);
00419 else if (strcmp (&opt[2], "f2c-intrinsics-delete") == 0)
00420 ffe_set_intrinsic_state_f2c (FFE_intrinsicstateDELETED);
00421 else if (strcmp (&opt[2], "f2c-intrinsics-hide") == 0)
00422 ffe_set_intrinsic_state_f2c (FFE_intrinsicstateHIDDEN);
00423 else if (strcmp (&opt[2], "f2c-intrinsics-disable") == 0)
00424 ffe_set_intrinsic_state_f2c (FFE_intrinsicstateDISABLED);
00425 else if (strcmp (&opt[2], "f2c-intrinsics-enable") == 0)
00426 ffe_set_intrinsic_state_f2c (FFE_intrinsicstateENABLED);
00427 else if (strcmp (&opt[2], "f90-intrinsics-delete") == 0)
00428 ffe_set_intrinsic_state_f90 (FFE_intrinsicstateDELETED);
00429 else if (strcmp (&opt[2], "f90-intrinsics-hide") == 0)
00430 ffe_set_intrinsic_state_f90 (FFE_intrinsicstateHIDDEN);
00431 else if (strcmp (&opt[2], "f90-intrinsics-disable") == 0)
00432 ffe_set_intrinsic_state_f90 (FFE_intrinsicstateDISABLED);
00433 else if (strcmp (&opt[2], "f90-intrinsics-enable") == 0)
00434 ffe_set_intrinsic_state_f90 (FFE_intrinsicstateENABLED);
00435 else if (strcmp (&opt[2], "mil-intrinsics-delete") == 0)
00436 ffe_set_intrinsic_state_mil (FFE_intrinsicstateDELETED);
00437 else if (strcmp (&opt[2], "mil-intrinsics-hide") == 0)
00438 ffe_set_intrinsic_state_mil (FFE_intrinsicstateHIDDEN);
00439 else if (strcmp (&opt[2], "mil-intrinsics-disable") == 0)
00440 ffe_set_intrinsic_state_mil (FFE_intrinsicstateDISABLED);
00441 else if (strcmp (&opt[2], "mil-intrinsics-enable") == 0)
00442 ffe_set_intrinsic_state_mil (FFE_intrinsicstateENABLED);
00443 else if (strcmp (&opt[2], "unix-intrinsics-delete") == 0)
00444 ffe_set_intrinsic_state_unix (FFE_intrinsicstateDELETED);
00445 else if (strcmp (&opt[2], "unix-intrinsics-hide") == 0)
00446 ffe_set_intrinsic_state_unix (FFE_intrinsicstateHIDDEN);
00447 else if (strcmp (&opt[2], "unix-intrinsics-disable") == 0)
00448 ffe_set_intrinsic_state_unix (FFE_intrinsicstateDISABLED);
00449 else if (strcmp (&opt[2], "unix-intrinsics-enable") == 0)
00450 ffe_set_intrinsic_state_unix (FFE_intrinsicstateENABLED);
00451 else if (strcmp (&opt[2], "vxt-intrinsics-delete") == 0)
00452 ffe_set_intrinsic_state_vxt (FFE_intrinsicstateDELETED);
00453 else if (strcmp (&opt[2], "vxt-intrinsics-hide") == 0)
00454 ffe_set_intrinsic_state_vxt (FFE_intrinsicstateHIDDEN);
00455 else if (strcmp (&opt[2], "vxt-intrinsics-disable") == 0)
00456 ffe_set_intrinsic_state_vxt (FFE_intrinsicstateDISABLED);
00457 else if (strcmp (&opt[2], "vxt-intrinsics-enable") == 0)
00458 ffe_set_intrinsic_state_vxt (FFE_intrinsicstateENABLED);
00459 else if (strncmp (&opt[2], "fixed-line-length-",
00460 strlen ("fixed-line-length-")) == 0)
00461 {
00462 char *len = &opt[2] + strlen ("fixed-line-length-");
00463
00464 if (strcmp (len, "none") == 0)
00465 {
00466 ffe_set_fixed_line_length (0);
00467 return -1;
00468 }
00469 else if (ffe_is_digit_string_ (len))
00470 {
00471 ffe_set_fixed_line_length (atol (len));
00472 return -1;
00473 }
00474 else
00475 return 0;
00476 }
00477 else
00478 return 0;
00479 }
00480 else if (opt[1] == 'W')
00481 {
00482 if (!strcmp (&opt[2], "comment"))
00483 ;
00484 else if (!strcmp (&opt[2], "no-comment"))
00485 ;
00486 else if (!strcmp (&opt[2], "comments"))
00487 ;
00488 else if (!strcmp (&opt[2], "no-comments"))
00489 ;
00490 else if (!strcmp (&opt[2], "trigraphs"))
00491 ;
00492 else if (!strcmp (&opt[2], "no-trigraphs"))
00493 ;
00494 else if (!strcmp (&opt[2], "import"))
00495 ;
00496 else if (!strcmp (&opt[2], "no-import"))
00497 ;
00498 else if (!strcmp (&opt[2], "globals"))
00499 ffe_set_is_warn_globals (TRUE);
00500 else if (!strcmp (&opt[2], "no-globals"))
00501 ffe_set_is_warn_globals (FALSE);
00502 else if (!strcmp (&opt[2], "implicit"))
00503 ffe_set_is_warn_implicit (TRUE);
00504 else if (!strcmp (&opt[2], "no-implicit"))
00505 ffe_set_is_warn_implicit (FALSE);
00506 else if (!strcmp (&opt[2], "surprising"))
00507 ffe_set_is_warn_surprising (TRUE);
00508 else if (!strcmp (&opt[2], "no-surprising"))
00509 ffe_set_is_warn_surprising (FALSE);
00510 else if (!strcmp (&opt[2], "all"))
00511 {
00512
00513
00514
00515 if (warn_uninitialized != 1)
00516 warn_uninitialized = 2;
00517 set_Wunused (1);
00518 }
00519 else
00520 return 0;
00521 }
00522 else if (opt[1] == 'I')
00523 return ffecom_decode_include_option (&opt[2]);
00524 else
00525 return 0;
00526
00527 return 1;
00528 }
00529
00530
00531
00532
00533
00534
00535
00536 void
00537 ffe_file (ffewhereFile wf, FILE *f)
00538 {
00539 ffe_init_1 ();
00540 ffelex_set_handler ((ffelexHandler) ffest_first);
00541 ffewhere_file_set (wf, TRUE, 0);
00542 if (ffe_is_free_form_)
00543 ffelex_file_free (wf, f);
00544 else
00545 ffelex_file_fixed (wf, f);
00546 ffest_eof ();
00547 ffe_terminate_1 ();
00548 }
00549
00550
00551
00552
00553
00554
00555
00556 void
00557 ffe_init_0 ()
00558 {
00559 ++ffe_count_0;
00560 ffe_in_0 = TRUE;
00561
00562 ffebad_init_0 ();
00563 ffebit_init_0 ();
00564 ffebld_init_0 ();
00565 ffecom_init_0 ();
00566 ffedata_init_0 ();
00567 ffeequiv_init_0 ();
00568 ffeexpr_init_0 ();
00569 ffeglobal_init_0 ();
00570 ffeimplic_init_0 ();
00571 ffeinfo_init_0 ();
00572 ffeintrin_init_0 ();
00573 ffelab_init_0 ();
00574 ffelex_init_0 ();
00575 ffename_init_0 ();
00576 ffesrc_init_0 ();
00577 ffest_init_0 ();
00578 ffestorag_init_0 ();
00579 ffesymbol_init_0 ();
00580 ffetarget_init_0 ();
00581 ffetype_init_0 ();
00582 ffewhere_init_0 ();
00583 }
00584
00585
00586
00587
00588
00589
00590
00591 void
00592 ffe_init_1 ()
00593 {
00594 ++ffe_count_1;
00595 ffe_in_1 = TRUE;
00596
00597 assert (ffe_file_pool_ == NULL);
00598 ffe_file_pool_ = malloc_pool_new ("File", malloc_pool_image (), 1024);
00599
00600 ffebad_init_1 ();
00601 ffebit_init_1 ();
00602 ffebld_init_1 ();
00603 ffecom_init_1 ();
00604 ffedata_init_1 ();
00605 ffeequiv_init_1 ();
00606 ffeexpr_init_1 ();
00607 ffeglobal_init_1 ();
00608 ffeimplic_init_1 ();
00609 ffeinfo_init_1 ();
00610 ffeintrin_init_1 ();
00611 ffelab_init_1 ();
00612 ffelex_init_1 ();
00613 ffename_init_1 ();
00614 ffesrc_init_1 ();
00615 ffest_init_1 ();
00616 ffestorag_init_1 ();
00617 ffesymbol_init_1 ();
00618 ffetarget_init_1 ();
00619 ffetype_init_1 ();
00620 ffewhere_init_1 ();
00621
00622 ffe_init_2 ();
00623 }
00624
00625
00626
00627
00628
00629
00630
00631 void
00632 ffe_init_2 ()
00633 {
00634 ++ffe_count_2;
00635 ffe_in_2 = TRUE;
00636
00637 assert (ffe_program_unit_pool_ == NULL);
00638 ffe_program_unit_pool_ = malloc_pool_new ("Program unit", ffe_file_pool_, 1024);
00639 ffe_is_mainprog_ = FALSE;
00640 ffe_is_saveall_ = !ffe_is_automatic_;
00641
00642 ffebad_init_2 ();
00643 ffebit_init_2 ();
00644 ffebld_init_2 ();
00645 ffecom_init_2 ();
00646 ffedata_init_2 ();
00647 ffeequiv_init_2 ();
00648 ffeexpr_init_2 ();
00649 ffeglobal_init_2 ();
00650 ffeimplic_init_2 ();
00651 ffeinfo_init_2 ();
00652 ffeintrin_init_2 ();
00653 ffelab_init_2 ();
00654 ffelex_init_2 ();
00655 ffename_init_2 ();
00656 ffesrc_init_2 ();
00657 ffest_init_2 ();
00658 ffestorag_init_2 ();
00659 ffesymbol_init_2 ();
00660 ffetarget_init_2 ();
00661 ffetype_init_2 ();
00662 ffewhere_init_2 ();
00663
00664 ffe_init_3 ();
00665 }
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675 void
00676 ffe_init_3 ()
00677 {
00678 ++ffe_count_3;
00679 ffe_in_3 = TRUE;
00680
00681 assert (ffe_any_unit_pool_ == NULL);
00682 ffe_any_unit_pool_ = malloc_pool_new ("Any unit", ffe_program_unit_pool_, 1024);
00683
00684 ffebad_init_3 ();
00685 ffebit_init_3 ();
00686 ffebld_init_3 ();
00687 ffecom_init_3 ();
00688 ffedata_init_3 ();
00689 ffeequiv_init_3 ();
00690 ffeexpr_init_3 ();
00691 ffeglobal_init_3 ();
00692 ffeimplic_init_3 ();
00693 ffeinfo_init_3 ();
00694 ffeintrin_init_3 ();
00695 ffelab_init_3 ();
00696 ffelex_init_3 ();
00697 ffename_init_3 ();
00698 ffesrc_init_3 ();
00699 ffest_init_3 ();
00700 ffestorag_init_3 ();
00701 ffesymbol_init_3 ();
00702 ffetarget_init_3 ();
00703 ffetype_init_3 ();
00704 ffewhere_init_3 ();
00705 }
00706
00707
00708
00709
00710
00711 void
00712 ffe_init_4 ()
00713 {
00714 ++ffe_count_4;
00715 ffe_in_4 = TRUE;
00716
00717 ffebad_init_4 ();
00718 ffebit_init_4 ();
00719 ffebld_init_4 ();
00720 ffecom_init_4 ();
00721 ffedata_init_4 ();
00722 ffeequiv_init_4 ();
00723 ffeexpr_init_4 ();
00724 ffeglobal_init_4 ();
00725 ffeimplic_init_4 ();
00726 ffeinfo_init_4 ();
00727 ffeintrin_init_4 ();
00728 ffelab_init_4 ();
00729 ffelex_init_4 ();
00730 ffename_init_4 ();
00731 ffesrc_init_4 ();
00732 ffest_init_4 ();
00733 ffestorag_init_4 ();
00734 ffesymbol_init_4 ();
00735 ffetarget_init_4 ();
00736 ffetype_init_4 ();
00737 ffewhere_init_4 ();
00738 }
00739
00740
00741
00742
00743
00744 void
00745 ffe_terminate_0 ()
00746 {
00747 ffe_count_1 = 0;
00748 ffe_in_0 = FALSE;
00749
00750 ffebad_terminate_0 ();
00751 ffebit_terminate_0 ();
00752 ffebld_terminate_0 ();
00753 ffecom_terminate_0 ();
00754 ffedata_terminate_0 ();
00755 ffeequiv_terminate_0 ();
00756 ffeexpr_terminate_0 ();
00757 ffeglobal_terminate_0 ();
00758 ffeimplic_terminate_0 ();
00759 ffeinfo_terminate_0 ();
00760 ffeintrin_terminate_0 ();
00761 ffelab_terminate_0 ();
00762 ffelex_terminate_0 ();
00763 ffename_terminate_0 ();
00764 ffesrc_terminate_0 ();
00765 ffest_terminate_0 ();
00766 ffestorag_terminate_0 ();
00767 ffesymbol_terminate_0 ();
00768 ffetarget_terminate_0 ();
00769 ffetype_terminate_0 ();
00770 ffewhere_terminate_0 ();
00771 }
00772
00773
00774
00775
00776
00777 void
00778 ffe_terminate_1 ()
00779 {
00780 ffe_count_2 = 0;
00781 ffe_in_1 = FALSE;
00782
00783 ffe_terminate_2 ();
00784
00785 ffebad_terminate_1 ();
00786 ffebit_terminate_1 ();
00787 ffebld_terminate_1 ();
00788 ffecom_terminate_1 ();
00789 ffedata_terminate_1 ();
00790 ffeequiv_terminate_1 ();
00791 ffeexpr_terminate_1 ();
00792 ffeglobal_terminate_1 ();
00793 ffeimplic_terminate_1 ();
00794 ffeinfo_terminate_1 ();
00795 ffeintrin_terminate_1 ();
00796 ffelab_terminate_1 ();
00797 ffelex_terminate_1 ();
00798 ffename_terminate_1 ();
00799 ffesrc_terminate_1 ();
00800 ffest_terminate_1 ();
00801 ffestorag_terminate_1 ();
00802 ffesymbol_terminate_1 ();
00803 ffetarget_terminate_1 ();
00804 ffetype_terminate_1 ();
00805 ffewhere_terminate_1 ();
00806
00807 assert (ffe_file_pool_ != NULL);
00808 malloc_pool_kill (ffe_file_pool_);
00809 ffe_file_pool_ = NULL;
00810 }
00811
00812
00813
00814
00815
00816 void
00817 ffe_terminate_2 ()
00818 {
00819 ffe_count_3 = 0;
00820 ffe_in_2 = FALSE;
00821
00822 ffe_terminate_3 ();
00823
00824 ffebad_terminate_2 ();
00825 ffebit_terminate_2 ();
00826 ffebld_terminate_2 ();
00827 ffecom_terminate_2 ();
00828 ffedata_terminate_2 ();
00829 ffeequiv_terminate_2 ();
00830 ffeexpr_terminate_2 ();
00831 ffeglobal_terminate_2 ();
00832 ffeimplic_terminate_2 ();
00833 ffeinfo_terminate_2 ();
00834 ffeintrin_terminate_2 ();
00835 ffelab_terminate_2 ();
00836 ffelex_terminate_2 ();
00837 ffename_terminate_2 ();
00838 ffesrc_terminate_2 ();
00839 ffest_terminate_2 ();
00840 ffestorag_terminate_2 ();
00841 ffesymbol_terminate_2 ();
00842 ffetarget_terminate_2 ();
00843 ffetype_terminate_2 ();
00844 ffewhere_terminate_2 ();
00845
00846 assert (ffe_program_unit_pool_ != NULL);
00847 malloc_pool_kill (ffe_program_unit_pool_);
00848 ffe_program_unit_pool_ = NULL;
00849 }
00850
00851
00852
00853
00854
00855 void
00856 ffe_terminate_3 ()
00857 {
00858 ffe_count_4 = 0;
00859 ffe_in_3 = FALSE;
00860
00861 ffebad_terminate_3 ();
00862 ffebit_terminate_3 ();
00863 ffebld_terminate_3 ();
00864 ffecom_terminate_3 ();
00865 ffedata_terminate_3 ();
00866 ffeequiv_terminate_3 ();
00867 ffeexpr_terminate_3 ();
00868 ffeglobal_terminate_3 ();
00869 ffeimplic_terminate_3 ();
00870 ffeinfo_terminate_3 ();
00871 ffeintrin_terminate_3 ();
00872 ffelab_terminate_3 ();
00873 ffelex_terminate_3 ();
00874 ffename_terminate_3 ();
00875 ffesrc_terminate_3 ();
00876 ffest_terminate_3 ();
00877 ffestorag_terminate_3 ();
00878 ffesymbol_terminate_3 ();
00879 ffetarget_terminate_3 ();
00880 ffetype_terminate_3 ();
00881 ffewhere_terminate_3 ();
00882
00883 assert (ffe_any_unit_pool_ != NULL);
00884 malloc_pool_kill (ffe_any_unit_pool_);
00885 ffe_any_unit_pool_ = NULL;
00886 }
00887
00888
00889
00890
00891
00892 void
00893 ffe_terminate_4 ()
00894 {
00895 ffe_in_4 = FALSE;
00896
00897 ffebad_terminate_4 ();
00898 ffebit_terminate_4 ();
00899 ffebld_terminate_4 ();
00900 ffecom_terminate_4 ();
00901 ffedata_terminate_4 ();
00902 ffeequiv_terminate_4 ();
00903 ffeexpr_terminate_4 ();
00904 ffeglobal_terminate_4 ();
00905 ffeimplic_terminate_4 ();
00906 ffeinfo_terminate_4 ();
00907 ffeintrin_terminate_4 ();
00908 ffelab_terminate_4 ();
00909 ffelex_terminate_4 ();
00910 ffename_terminate_4 ();
00911 ffesrc_terminate_4 ();
00912 ffest_terminate_4 ();
00913 ffestorag_terminate_4 ();
00914 ffesymbol_terminate_4 ();
00915 ffetarget_terminate_4 ();
00916 ffetype_terminate_4 ();
00917 ffewhere_terminate_4 ();
00918 }