]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/f/top.c
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / f / top.c
diff --git a/gcc/f/top.c b/gcc/f/top.c
deleted file mode 100644 (file)
index 774f29f..0000000
+++ /dev/null
@@ -1,918 +0,0 @@
-/* top.c -- Implementation File (module.c template V1.0)
-   Copyright (C) 1995, 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
-   Contributed by James Craig Burley.
-
-This file is part of GNU Fortran.
-
-GNU Fortran is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Fortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Fortran; see the file COPYING.  If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA.
-
-   Related Modules:
-      None.
-
-   Description:
-      The GNU Fortran Front End.
-
-   Modifications:
-*/
-
-/* Include files. */
-
-#include "proj.h"
-#include "top.h"
-#include "bad.h"
-#include "bit.h"
-#include "bld.h"
-#include "com.h"
-#include "data.h"
-#include "equiv.h"
-#include "expr.h"
-#include "global.h"
-#include "implic.h"
-#include "info.h"
-#include "intrin.h"
-#include "lab.h"
-#include "lex.h"
-#include "malloc.h"
-#include "name.h"
-#include "src.h"
-#include "st.h"
-#include "storag.h"
-#include "symbol.h"
-#include "target.h"
-#include "where.h"
-#include "flags.h"
-#include "toplev.h"
-
-/* Externals defined here. */
-
-int flag_traditional;          /* Shouldn't need this (C front end only)! */
-bool ffe_is_do_internal_checks_ = FALSE;
-bool ffe_is_90_ = FFETARGET_defaultIS_90;
-bool ffe_is_automatic_ = FFETARGET_defaultIS_AUTOMATIC;
-bool ffe_is_backslash_ = FFETARGET_defaultIS_BACKSLASH;
-bool ffe_is_emulate_complex_ = FALSE;
-bool ffe_is_underscoring_ = FFETARGET_defaultEXTERNAL_UNDERSCORED
-  || FFETARGET_defaultUNDERSCORED_EXTERNAL_UNDERSCORED;
-bool ffe_is_second_underscore_ = FFETARGET_defaultUNDERSCORED_EXTERNAL_UNDERSCORED;
-bool ffe_is_debug_kludge_ = FALSE;
-bool ffe_is_dollar_ok_ = FFETARGET_defaultIS_DOLLAR_OK;
-bool ffe_is_f2c_ = FFETARGET_defaultIS_F2C;
-bool ffe_is_f2c_library_ = FFETARGET_defaultIS_F2C_LIBRARY;
-bool ffe_is_ffedebug_ = FALSE;
-bool ffe_is_flatten_arrays_ = FALSE;
-bool ffe_is_free_form_ = FFETARGET_defaultIS_FREE_FORM;
-bool ffe_is_globals_ = TRUE;
-bool ffe_is_init_local_zero_ = FFETARGET_defaultIS_INIT_LOCAL_ZERO;
-bool ffe_is_mainprog_;         /* TRUE if current prog unit known to be
-                                  main. */
-bool ffe_is_onetrip_ = FALSE;
-bool ffe_is_silent_ = TRUE;
-bool ffe_is_typeless_boz_ = FALSE;
-bool ffe_is_pedantic_ = FFETARGET_defaultIS_PEDANTIC;
-bool ffe_is_saveall_;          /* TRUE if mainprog or SAVE (no args) seen. */
-bool ffe_is_ugly_args_ = TRUE;
-bool ffe_is_ugly_assign_ = FALSE;      /* Try and store pointer to ASSIGN labels in INTEGER vars. */
-bool ffe_is_ugly_assumed_ = FALSE;     /* DIMENSION X([...,]1) => DIMENSION X([...,]*) */
-bool ffe_is_ugly_comma_ = FALSE;
-bool ffe_is_ugly_complex_ = FALSE;
-bool ffe_is_ugly_init_ = TRUE;
-bool ffe_is_ugly_logint_ = FALSE;
-bool ffe_is_version_ = FALSE;
-bool ffe_is_vxt_ = FALSE;
-bool ffe_is_warn_globals_ = TRUE;
-bool ffe_is_warn_implicit_ = FALSE;
-bool ffe_is_warn_surprising_ = FALSE;
-bool ffe_is_zeros_ = FALSE;
-ffeCase ffe_case_intrin_ = FFETARGET_defaultCASE_INTRIN;
-ffeCase ffe_case_match_ = FFETARGET_defaultCASE_MATCH;
-ffeCase ffe_case_source_ = FFETARGET_defaultCASE_SOURCE;
-ffeCase ffe_case_symbol_ = FFETARGET_defaultCASE_SYMBOL;
-ffeIntrinsicState ffe_intrinsic_state_badu77_ = FFE_intrinsicstateENABLED;
-ffeIntrinsicState ffe_intrinsic_state_gnu_ = FFE_intrinsicstateENABLED;
-ffeIntrinsicState ffe_intrinsic_state_f2c_ = FFE_intrinsicstateENABLED;
-ffeIntrinsicState ffe_intrinsic_state_f90_ = FFE_intrinsicstateENABLED;
-ffeIntrinsicState ffe_intrinsic_state_mil_ = FFE_intrinsicstateENABLED;
-ffeIntrinsicState ffe_intrinsic_state_unix_ = FFE_intrinsicstateENABLED;
-ffeIntrinsicState ffe_intrinsic_state_vxt_ = FFE_intrinsicstateENABLED;
-int ffe_fixed_line_length_ = FFETARGET_defaultFIXED_LINE_LENGTH;
-mallocPool ffe_file_pool_ = NULL;
-mallocPool ffe_any_unit_pool_ = NULL;
-mallocPool ffe_program_unit_pool_ = NULL;
-ffeCounter ffe_count_0 = 0;
-ffeCounter ffe_count_1 = 0;
-ffeCounter ffe_count_2 = 0;
-ffeCounter ffe_count_3 = 0;
-ffeCounter ffe_count_4 = 0;
-bool ffe_in_0 = FALSE;
-bool ffe_in_1 = FALSE;
-bool ffe_in_2 = FALSE;
-bool ffe_in_3 = FALSE;
-bool ffe_in_4 = FALSE;
-
-/* Simple definitions and enumerations. */
-
-
-/* Internal typedefs. */
-
-
-/* Private include files. */
-
-
-/* Internal structure definitions. */
-
-
-/* Static objects accessed by functions in this module. */
-
-
-/* Static functions (internal). */
-
-static bool ffe_is_digit_string_ (char *s);
-
-/* Internal macros. */
-\f
-static bool
-ffe_is_digit_string_ (char *s)
-{
-  char *p;
-
-  for (p = s; ISDIGIT (*p); ++p)
-    ;
-
-  return (p != s) && (*p == '\0');
-}
-
-/* Handle command-line options.         Returns 0 if unrecognized, 1 if
-   recognized and handled.  */
-
-int
-ffe_decode_option (argc, argv)
-     int argc ATTRIBUTE_UNUSED;
-     char **argv;
-{
-  char *opt = argv[0];
-  if (opt[0] != '-')
-    return 0;
-  if (opt[1] == 'f')
-    {
-      if (strcmp (&opt[2], "version") == 0)
-       {
-         ffe_set_is_version (TRUE);
-         ffe_set_is_do_internal_checks (TRUE);
-       }
-      else if (strcmp (&opt[2], "f66") == 0)
-       {
-         ffe_set_is_onetrip (TRUE);
-         ffe_set_is_ugly_assumed (TRUE);
-       }
-      else if (strcmp (&opt[2], "no-f66") == 0)
-       {
-         ffe_set_is_onetrip (FALSE);
-         ffe_set_is_ugly_assumed (FALSE);
-       }
-      else if (strcmp (&opt[2], "f77") == 0)
-       {
-         ffe_set_is_backslash (TRUE);
-         ffe_set_is_typeless_boz (FALSE);
-       }
-      else if (strcmp (&opt[2], "no-f77") == 0)
-       {
-         ffe_set_is_backslash (FALSE);
-       }
-      else if (strcmp (&opt[2], "f90") == 0)
-       ffe_set_is_90 (TRUE);
-      else if (strcmp (&opt[2], "no-f90") == 0)
-       ffe_set_is_90 (FALSE);
-      else if (strcmp (&opt[2], "automatic") == 0)
-       ffe_set_is_automatic (TRUE);
-      else if (strcmp (&opt[2], "no-automatic") == 0)
-       ffe_set_is_automatic (FALSE);
-      else if (strcmp (&opt[2], "dollar-ok") == 0)
-       ffe_set_is_dollar_ok (TRUE);
-      else if (strcmp (&opt[2], "no-dollar-ok") == 0)
-       ffe_set_is_dollar_ok (FALSE);
-      else if (strcmp (&opt[2], "f2c") == 0)
-       ffe_set_is_f2c (TRUE);
-      else if (strcmp (&opt[2], "no-f2c") == 0)
-       ffe_set_is_f2c (FALSE);
-      else if (strcmp (&opt[2], "f2c-library") == 0)
-       ffe_set_is_f2c_library (TRUE);
-      else if (strcmp (&opt[2], "no-f2c-library") == 0)
-       ffe_set_is_f2c_library (FALSE);
-      else if (strcmp (&opt[2], "flatten-arrays") == 0)
-       ffe_set_is_flatten_arrays (TRUE);
-      else if (strcmp (&opt[2], "no-flatten-arrays") == 0)
-       ffe_set_is_flatten_arrays (FALSE);
-      else if (strcmp (&opt[2], "free-form") == 0)
-       ffe_set_is_free_form (TRUE);
-      else if (strcmp (&opt[2], "no-free-form") == 0)
-       ffe_set_is_free_form (FALSE);
-      else if (strcmp (&opt[2], "fixed-form") == 0)
-       {
-         ffe_set_is_free_form (FALSE);
-         return -1;
-       }
-      else if (strcmp (&opt[2], "no-fixed-form") == 0)
-       ffe_set_is_free_form (TRUE);
-      else if (strcmp (&opt[2], "pedantic") == 0)
-       ffe_set_is_pedantic (TRUE);
-      else if (strcmp (&opt[2], "no-pedantic") == 0)
-       ffe_set_is_pedantic (FALSE);
-      else if (strcmp (&opt[2], "vxt") == 0)
-       ffe_set_is_vxt (TRUE);
-      else if (strcmp (&opt[2], "not-vxt") == 0)
-       ffe_set_is_vxt (FALSE);
-      else if (strcmp (&opt[2], "vxt-not-f90") == 0)
-       warning ("%s no longer supported -- try -fvxt", opt);
-      else if (strcmp (&opt[2], "f90-not-vxt") == 0)
-       warning ("%s no longer supported -- try -fno-vxt -ff90", opt);
-      else if (strcmp (&opt[2], "no-ugly") == 0)
-       {
-         ffe_set_is_ugly_args (FALSE);
-         ffe_set_is_ugly_assign (FALSE);
-         ffe_set_is_ugly_assumed (FALSE);
-         ffe_set_is_ugly_comma (FALSE);
-         ffe_set_is_ugly_complex (FALSE);
-         ffe_set_is_ugly_init (FALSE);
-         ffe_set_is_ugly_logint (FALSE);
-       }
-      else if (strcmp (&opt[2], "ugly-args") == 0)
-       ffe_set_is_ugly_args (TRUE);
-      else if (strcmp (&opt[2], "no-ugly-args") == 0)
-       ffe_set_is_ugly_args (FALSE);
-      else if (strcmp (&opt[2], "ugly-assign") == 0)
-       ffe_set_is_ugly_assign (TRUE);
-      else if (strcmp (&opt[2], "no-ugly-assign") == 0)
-       ffe_set_is_ugly_assign (FALSE);
-      else if (strcmp (&opt[2], "ugly-assumed") == 0)
-       ffe_set_is_ugly_assumed (TRUE);
-      else if (strcmp (&opt[2], "no-ugly-assumed") == 0)
-       ffe_set_is_ugly_assumed (FALSE);
-      else if (strcmp (&opt[2], "ugly-comma") == 0)
-       ffe_set_is_ugly_comma (TRUE);
-      else if (strcmp (&opt[2], "no-ugly-comma") == 0)
-       ffe_set_is_ugly_comma (FALSE);
-      else if (strcmp (&opt[2], "ugly-complex") == 0)
-       ffe_set_is_ugly_complex (TRUE);
-      else if (strcmp (&opt[2], "no-ugly-complex") == 0)
-       ffe_set_is_ugly_complex (FALSE);
-      else if (strcmp (&opt[2], "ugly-init") == 0)
-       ffe_set_is_ugly_init (TRUE);
-      else if (strcmp (&opt[2], "no-ugly-init") == 0)
-       ffe_set_is_ugly_init (FALSE);
-      else if (strcmp (&opt[2], "ugly-logint") == 0)
-       ffe_set_is_ugly_logint (TRUE);
-      else if (strcmp (&opt[2], "no-ugly-logint") == 0)
-       ffe_set_is_ugly_logint (FALSE);
-      else if (strcmp (&opt[2], "xyzzy") == 0)
-       ffe_set_is_ffedebug (TRUE);
-      else if (strcmp (&opt[2], "no-xyzzy") == 0)
-       ffe_set_is_ffedebug (FALSE);
-      else if (strcmp (&opt[2], "init-local-zero") == 0)
-       ffe_set_is_init_local_zero (TRUE);
-      else if (strcmp (&opt[2], "no-init-local-zero") == 0)
-       ffe_set_is_init_local_zero (FALSE);
-      else if (strcmp (&opt[2], "emulate-complex") == 0)
-       ffe_set_is_emulate_complex (TRUE);
-      else if (strcmp (&opt[2], "no-emulate-complex") == 0)
-       ffe_set_is_emulate_complex (FALSE);
-      else if (strcmp (&opt[2], "backslash") == 0)
-       ffe_set_is_backslash (TRUE);
-      else if (strcmp (&opt[2], "no-backslash") == 0)
-       ffe_set_is_backslash (FALSE);
-      else if (strcmp (&opt[2], "underscoring") == 0)
-       ffe_set_is_underscoring (TRUE);
-      else if (strcmp (&opt[2], "no-underscoring") == 0)
-       ffe_set_is_underscoring (FALSE);
-      else if (strcmp (&opt[2], "second-underscore") == 0)
-       ffe_set_is_second_underscore (TRUE);
-      else if (strcmp (&opt[2], "no-second-underscore") == 0)
-       ffe_set_is_second_underscore (FALSE);
-      else if (strcmp (&opt[2], "zeros") == 0)
-       ffe_set_is_zeros (TRUE);
-      else if (strcmp (&opt[2], "no-zeros") == 0)
-       ffe_set_is_zeros (FALSE);
-      else if (strcmp (&opt[2], "debug-kludge") == 0)
-       warning ("%s disabled, use normal debugging flags", opt);
-      else if (strcmp (&opt[2], "no-debug-kludge") == 0)
-       warning ("%s disabled, use normal debugging flags", opt);
-      else if (strcmp (&opt[2], "onetrip") == 0)
-       ffe_set_is_onetrip (TRUE);
-      else if (strcmp (&opt[2], "no-onetrip") == 0)
-       ffe_set_is_onetrip (FALSE);
-      else if (strcmp (&opt[2], "silent") == 0)
-       ffe_set_is_silent (TRUE);
-      else if (strcmp (&opt[2], "no-silent") == 0)
-       ffe_set_is_silent (FALSE);
-      else if (strcmp (&opt[2], "globals") == 0)
-       ffe_set_is_globals (TRUE);
-      else if (strcmp (&opt[2], "no-globals") == 0)
-       ffe_set_is_globals (FALSE);
-      else if (strcmp (&opt[2], "fortran-bounds-check") == 0)
-       flag_bounds_check = TRUE;
-      else if (strcmp (&opt[2], "no-fortran-bounds-check") == 0)
-       flag_bounds_check = FALSE;
-      else if (strcmp (&opt[2], "typeless-boz") == 0)
-       ffe_set_is_typeless_boz (TRUE);
-      else if (strcmp (&opt[2], "no-typeless-boz") == 0)
-       ffe_set_is_typeless_boz (FALSE);
-      else if (strcmp (&opt[2], "intrin-case-initcap") == 0)
-       ffe_set_case_intrin (FFE_caseINITCAP);
-      else if (strcmp (&opt[2], "intrin-case-upper") == 0)
-       ffe_set_case_intrin (FFE_caseUPPER);
-      else if (strcmp (&opt[2], "intrin-case-lower") == 0)
-       ffe_set_case_intrin (FFE_caseLOWER);
-      else if (strcmp (&opt[2], "intrin-case-any") == 0)
-       ffe_set_case_intrin (FFE_caseNONE);
-      else if (strcmp (&opt[2], "match-case-initcap") == 0)
-       ffe_set_case_match (FFE_caseINITCAP);
-      else if (strcmp (&opt[2], "match-case-upper") == 0)
-       ffe_set_case_match (FFE_caseUPPER);
-      else if (strcmp (&opt[2], "match-case-lower") == 0)
-       ffe_set_case_match (FFE_caseLOWER);
-      else if (strcmp (&opt[2], "match-case-any") == 0)
-       ffe_set_case_match (FFE_caseNONE);
-      else if (strcmp (&opt[2], "source-case-upper") == 0)
-       ffe_set_case_source (FFE_caseUPPER);
-      else if (strcmp (&opt[2], "source-case-lower") == 0)
-       ffe_set_case_source (FFE_caseLOWER);
-      else if (strcmp (&opt[2], "source-case-preserve") == 0)
-       ffe_set_case_source (FFE_caseNONE);
-      else if (strcmp (&opt[2], "symbol-case-initcap") == 0)
-       ffe_set_case_symbol (FFE_caseINITCAP);
-      else if (strcmp (&opt[2], "symbol-case-upper") == 0)
-       ffe_set_case_symbol (FFE_caseUPPER);
-      else if (strcmp (&opt[2], "symbol-case-lower") == 0)
-       ffe_set_case_symbol (FFE_caseLOWER);
-      else if (strcmp (&opt[2], "symbol-case-any") == 0)
-       ffe_set_case_symbol (FFE_caseNONE);
-      else if (strcmp (&opt[2], "case-strict-upper") == 0)
-       {
-         ffe_set_case_intrin (FFE_caseUPPER);
-         ffe_set_case_match (FFE_caseUPPER);
-         ffe_set_case_source (FFE_caseNONE);
-         ffe_set_case_symbol (FFE_caseUPPER);
-       }
-      else if (strcmp (&opt[2], "case-strict-lower") == 0)
-       {
-         ffe_set_case_intrin (FFE_caseLOWER);
-         ffe_set_case_match (FFE_caseLOWER);
-         ffe_set_case_source (FFE_caseNONE);
-         ffe_set_case_symbol (FFE_caseLOWER);
-       }
-      else if (strcmp (&opt[2], "case-initcap") == 0)
-       {
-         ffe_set_case_intrin (FFE_caseINITCAP);
-         ffe_set_case_match (FFE_caseINITCAP);
-         ffe_set_case_source (FFE_caseNONE);
-         ffe_set_case_symbol (FFE_caseINITCAP);
-       }
-      else if (strcmp (&opt[2], "case-upper") == 0)
-       {
-         ffe_set_case_intrin (FFE_caseNONE);
-         ffe_set_case_match (FFE_caseNONE);
-         ffe_set_case_source (FFE_caseUPPER);
-         ffe_set_case_symbol (FFE_caseNONE);
-       }
-      else if (strcmp (&opt[2], "case-lower") == 0)
-       {
-         ffe_set_case_intrin (FFE_caseNONE);
-         ffe_set_case_match (FFE_caseNONE);
-         ffe_set_case_source (FFE_caseLOWER);
-         ffe_set_case_symbol (FFE_caseNONE);
-       }
-      else if (strcmp (&opt[2], "case-preserve") == 0)
-       {
-         ffe_set_case_intrin (FFE_caseNONE);
-         ffe_set_case_match (FFE_caseNONE);
-         ffe_set_case_source (FFE_caseNONE);
-         ffe_set_case_symbol (FFE_caseNONE);
-       }
-      else if (strcmp (&opt[2], "badu77-intrinsics-delete") == 0)
-       ffe_set_intrinsic_state_badu77 (FFE_intrinsicstateDELETED);
-      else if (strcmp (&opt[2], "badu77-intrinsics-hide") == 0)
-       ffe_set_intrinsic_state_badu77 (FFE_intrinsicstateHIDDEN);
-      else if (strcmp (&opt[2], "badu77-intrinsics-disable") == 0)
-       ffe_set_intrinsic_state_badu77 (FFE_intrinsicstateDISABLED);
-      else if (strcmp (&opt[2], "badu77-intrinsics-enable") == 0)
-       ffe_set_intrinsic_state_badu77 (FFE_intrinsicstateENABLED);
-      else if (strcmp (&opt[2], "gnu-intrinsics-delete") == 0)
-       ffe_set_intrinsic_state_gnu (FFE_intrinsicstateDELETED);
-      else if (strcmp (&opt[2], "gnu-intrinsics-hide") == 0)
-       ffe_set_intrinsic_state_gnu (FFE_intrinsicstateHIDDEN);
-      else if (strcmp (&opt[2], "gnu-intrinsics-disable") == 0)
-       ffe_set_intrinsic_state_gnu (FFE_intrinsicstateDISABLED);
-      else if (strcmp (&opt[2], "gnu-intrinsics-enable") == 0)
-       ffe_set_intrinsic_state_gnu (FFE_intrinsicstateENABLED);
-      else if (strcmp (&opt[2], "f2c-intrinsics-delete") == 0)
-       ffe_set_intrinsic_state_f2c (FFE_intrinsicstateDELETED);
-      else if (strcmp (&opt[2], "f2c-intrinsics-hide") == 0)
-       ffe_set_intrinsic_state_f2c (FFE_intrinsicstateHIDDEN);
-      else if (strcmp (&opt[2], "f2c-intrinsics-disable") == 0)
-       ffe_set_intrinsic_state_f2c (FFE_intrinsicstateDISABLED);
-      else if (strcmp (&opt[2], "f2c-intrinsics-enable") == 0)
-       ffe_set_intrinsic_state_f2c (FFE_intrinsicstateENABLED);
-      else if (strcmp (&opt[2], "f90-intrinsics-delete") == 0)
-       ffe_set_intrinsic_state_f90 (FFE_intrinsicstateDELETED);
-      else if (strcmp (&opt[2], "f90-intrinsics-hide") == 0)
-       ffe_set_intrinsic_state_f90 (FFE_intrinsicstateHIDDEN);
-      else if (strcmp (&opt[2], "f90-intrinsics-disable") == 0)
-       ffe_set_intrinsic_state_f90 (FFE_intrinsicstateDISABLED);
-      else if (strcmp (&opt[2], "f90-intrinsics-enable") == 0)
-       ffe_set_intrinsic_state_f90 (FFE_intrinsicstateENABLED);
-      else if (strcmp (&opt[2], "mil-intrinsics-delete") == 0)
-       ffe_set_intrinsic_state_mil (FFE_intrinsicstateDELETED);
-      else if (strcmp (&opt[2], "mil-intrinsics-hide") == 0)
-       ffe_set_intrinsic_state_mil (FFE_intrinsicstateHIDDEN);
-      else if (strcmp (&opt[2], "mil-intrinsics-disable") == 0)
-       ffe_set_intrinsic_state_mil (FFE_intrinsicstateDISABLED);
-      else if (strcmp (&opt[2], "mil-intrinsics-enable") == 0)
-       ffe_set_intrinsic_state_mil (FFE_intrinsicstateENABLED);
-      else if (strcmp (&opt[2], "unix-intrinsics-delete") == 0)
-       ffe_set_intrinsic_state_unix (FFE_intrinsicstateDELETED);
-      else if (strcmp (&opt[2], "unix-intrinsics-hide") == 0)
-       ffe_set_intrinsic_state_unix (FFE_intrinsicstateHIDDEN);
-      else if (strcmp (&opt[2], "unix-intrinsics-disable") == 0)
-       ffe_set_intrinsic_state_unix (FFE_intrinsicstateDISABLED);
-      else if (strcmp (&opt[2], "unix-intrinsics-enable") == 0)
-       ffe_set_intrinsic_state_unix (FFE_intrinsicstateENABLED);
-      else if (strcmp (&opt[2], "vxt-intrinsics-delete") == 0)
-       ffe_set_intrinsic_state_vxt (FFE_intrinsicstateDELETED);
-      else if (strcmp (&opt[2], "vxt-intrinsics-hide") == 0)
-       ffe_set_intrinsic_state_vxt (FFE_intrinsicstateHIDDEN);
-      else if (strcmp (&opt[2], "vxt-intrinsics-disable") == 0)
-       ffe_set_intrinsic_state_vxt (FFE_intrinsicstateDISABLED);
-      else if (strcmp (&opt[2], "vxt-intrinsics-enable") == 0)
-       ffe_set_intrinsic_state_vxt (FFE_intrinsicstateENABLED);
-      else if (strncmp (&opt[2], "fixed-line-length-",
-                       strlen ("fixed-line-length-")) == 0)
-       {
-         char *len = &opt[2] + strlen ("fixed-line-length-");
-
-         if (strcmp (len, "none") == 0)
-           {
-             ffe_set_fixed_line_length (0);
-             return -1;
-           }
-         else if (ffe_is_digit_string_ (len))
-           {
-             ffe_set_fixed_line_length (atol (len));
-             return -1;
-           }
-         else
-           return 0;
-       }
-      else
-       return 0;
-    }
-  else if (opt[1] == 'W')
-    {
-      if (!strcmp (&opt[2], "comment"))
-       ; /* cpp handles this one.  */
-      else if (!strcmp (&opt[2], "no-comment"))
-       ; /* cpp handles this one.  */
-      else if (!strcmp (&opt[2], "comments"))
-       ; /* cpp handles this one.  */
-      else if (!strcmp (&opt[2], "no-comments"))
-       ; /* cpp handles this one.  */
-      else if (!strcmp (&opt[2], "trigraphs"))
-       ; /* cpp handles this one.  */
-      else if (!strcmp (&opt[2], "no-trigraphs"))
-       ; /* cpp handles this one.  */
-      else if (!strcmp (&opt[2], "import"))
-       ; /* cpp handles this one.  */
-      else if (!strcmp (&opt[2], "no-import"))
-       ; /* cpp handles this one.  */
-      else if (!strcmp (&opt[2], "globals"))
-       ffe_set_is_warn_globals (TRUE);
-      else if (!strcmp (&opt[2], "no-globals"))
-       ffe_set_is_warn_globals (FALSE);
-      else if (!strcmp (&opt[2], "implicit"))
-       ffe_set_is_warn_implicit (TRUE);
-      else if (!strcmp (&opt[2], "no-implicit"))
-       ffe_set_is_warn_implicit (FALSE);
-      else if (!strcmp (&opt[2], "surprising"))
-       ffe_set_is_warn_surprising (TRUE);
-      else if (!strcmp (&opt[2], "no-surprising"))
-       ffe_set_is_warn_surprising (FALSE);
-      else if (!strcmp (&opt[2], "all"))
-       {
-         /* We save the value of warn_uninitialized, since if they put
-            -Wuninitialized on the command line, we need to generate a
-            warning about not using it without also specifying -O.  */
-         if (warn_uninitialized != 1)
-           warn_uninitialized = 2;
-         set_Wunused (1);
-       }
-      else
-       return 0;
-    }
-  else if (opt[1] == 'I')
-    return ffecom_decode_include_option (&opt[2]);
-  else
-    return 0;
-
-  return 1;
-}
-
-/* Run the FFE on a source file (not an INCLUDEd file).
-
-   Runs the whole shebang.
-
-   Prepare and invoke the appropriate lexer.  */
-
-void
-ffe_file (ffewhereFile wf, FILE *f)
-{
-  ffe_init_1 ();
-  ffelex_set_handler ((ffelexHandler) ffest_first);
-  ffewhere_file_set (wf, TRUE, 0);
-  if (ffe_is_free_form_)
-    ffelex_file_free (wf, f);
-  else
-    ffelex_file_fixed (wf, f);
-  ffest_eof ();
-  ffe_terminate_1 ();
-}
-
-/* ffe_init_0 -- Initialize the FFE per image invocation
-
-   ffe_init_0();
-
-   Performs per-image invocation.  */
-
-void
-ffe_init_0 ()
-{
-  ++ffe_count_0;
-  ffe_in_0 = TRUE;
-
-  ffebad_init_0 ();
-  ffebit_init_0 ();
-  ffebld_init_0 ();
-  ffecom_init_0 ();
-  ffedata_init_0 ();
-  ffeequiv_init_0 ();
-  ffeexpr_init_0 ();
-  ffeglobal_init_0 ();
-  ffeimplic_init_0 ();
-  ffeinfo_init_0 ();
-  ffeintrin_init_0 ();
-  ffelab_init_0 ();
-  ffelex_init_0 ();
-  ffename_init_0 ();
-  ffesrc_init_0 ();
-  ffest_init_0 ();
-  ffestorag_init_0 ();
-  ffesymbol_init_0 ();
-  ffetarget_init_0 ();
-  ffetype_init_0 ();
-  ffewhere_init_0 ();
-}
-
-/* ffe_init_1 -- Initialize the FFE per source file
-
-   ffe_init_1();
-
-   Performs per-source-file invocation (not including INCLUDEd files). */
-
-void
-ffe_init_1 ()
-{
-  ++ffe_count_1;
-  ffe_in_1 = TRUE;
-
-  assert (ffe_file_pool_ == NULL);
-  ffe_file_pool_ = malloc_pool_new ("File", malloc_pool_image (), 1024);
-
-  ffebad_init_1 ();
-  ffebit_init_1 ();
-  ffebld_init_1 ();
-  ffecom_init_1 ();
-  ffedata_init_1 ();
-  ffeequiv_init_1 ();
-  ffeexpr_init_1 ();
-  ffeglobal_init_1 ();
-  ffeimplic_init_1 ();
-  ffeinfo_init_1 ();
-  ffeintrin_init_1 ();
-  ffelab_init_1 ();
-  ffelex_init_1 ();
-  ffename_init_1 ();
-  ffesrc_init_1 ();
-  ffest_init_1 ();
-  ffestorag_init_1 ();
-  ffesymbol_init_1 ();
-  ffetarget_init_1 ();
-  ffetype_init_1 ();
-  ffewhere_init_1 ();
-
-  ffe_init_2 ();
-}
-
-/* ffe_init_2 -- Initialize the FFE per outer program unit
-
-   ffe_init_2();
-
-   Performs per-program-unit invocation.  */
-
-void
-ffe_init_2 ()
-{
-  ++ffe_count_2;
-  ffe_in_2 = TRUE;
-
-  assert (ffe_program_unit_pool_ == NULL);
-  ffe_program_unit_pool_ = malloc_pool_new ("Program unit", ffe_file_pool_, 1024);
-  ffe_is_mainprog_ = FALSE;
-  ffe_is_saveall_ = !ffe_is_automatic_;
-
-  ffebad_init_2 ();
-  ffebit_init_2 ();
-  ffebld_init_2 ();
-  ffecom_init_2 ();
-  ffedata_init_2 ();
-  ffeequiv_init_2 ();
-  ffeexpr_init_2 ();
-  ffeglobal_init_2 ();
-  ffeimplic_init_2 ();
-  ffeinfo_init_2 ();
-  ffeintrin_init_2 ();
-  ffelab_init_2 ();
-  ffelex_init_2 ();
-  ffename_init_2 ();
-  ffesrc_init_2 ();
-  ffest_init_2 ();
-  ffestorag_init_2 ();
-  ffesymbol_init_2 ();
-  ffetarget_init_2 ();
-  ffetype_init_2 ();
-  ffewhere_init_2 ();
-
-  ffe_init_3 ();
-}
-
-/* ffe_init_3 -- Initialize the FFE per any program unit
-
-   ffe_init_3();
-
-   Performs per-any-unit initialization; does NOT do
-   per-statement-function-definition initialization (i.e. the chain
-   of inits, from 0-3, breaks here; level 4 must be invoked independently).  */
-
-void
-ffe_init_3 ()
-{
-  ++ffe_count_3;
-  ffe_in_3 = TRUE;
-
-  assert (ffe_any_unit_pool_ == NULL);
-  ffe_any_unit_pool_ = malloc_pool_new ("Any unit", ffe_program_unit_pool_, 1024);
-
-  ffebad_init_3 ();
-  ffebit_init_3 ();
-  ffebld_init_3 ();
-  ffecom_init_3 ();
-  ffedata_init_3 ();
-  ffeequiv_init_3 ();
-  ffeexpr_init_3 ();
-  ffeglobal_init_3 ();
-  ffeimplic_init_3 ();
-  ffeinfo_init_3 ();
-  ffeintrin_init_3 ();
-  ffelab_init_3 ();
-  ffelex_init_3 ();
-  ffename_init_3 ();
-  ffesrc_init_3 ();
-  ffest_init_3 ();
-  ffestorag_init_3 ();
-  ffesymbol_init_3 ();
-  ffetarget_init_3 ();
-  ffetype_init_3 ();
-  ffewhere_init_3 ();
-}
-
-/* ffe_init_4 -- Initialize the FFE per statement function definition
-
-   ffe_init_4();  */
-
-void
-ffe_init_4 ()
-{
-  ++ffe_count_4;
-  ffe_in_4 = TRUE;
-
-  ffebad_init_4 ();
-  ffebit_init_4 ();
-  ffebld_init_4 ();
-  ffecom_init_4 ();
-  ffedata_init_4 ();
-  ffeequiv_init_4 ();
-  ffeexpr_init_4 ();
-  ffeglobal_init_4 ();
-  ffeimplic_init_4 ();
-  ffeinfo_init_4 ();
-  ffeintrin_init_4 ();
-  ffelab_init_4 ();
-  ffelex_init_4 ();
-  ffename_init_4 ();
-  ffesrc_init_4 ();
-  ffest_init_4 ();
-  ffestorag_init_4 ();
-  ffesymbol_init_4 ();
-  ffetarget_init_4 ();
-  ffetype_init_4 ();
-  ffewhere_init_4 ();
-}
-
-/* ffe_terminate_0 -- Terminate the FFE prior to image termination
-
-   ffe_terminate_0();  */
-
-void
-ffe_terminate_0 ()
-{
-  ffe_count_1 = 0;
-  ffe_in_0 = FALSE;
-
-  ffebad_terminate_0 ();
-  ffebit_terminate_0 ();
-  ffebld_terminate_0 ();
-  ffecom_terminate_0 ();
-  ffedata_terminate_0 ();
-  ffeequiv_terminate_0 ();
-  ffeexpr_terminate_0 ();
-  ffeglobal_terminate_0 ();
-  ffeimplic_terminate_0 ();
-  ffeinfo_terminate_0 ();
-  ffeintrin_terminate_0 ();
-  ffelab_terminate_0 ();
-  ffelex_terminate_0 ();
-  ffename_terminate_0 ();
-  ffesrc_terminate_0 ();
-  ffest_terminate_0 ();
-  ffestorag_terminate_0 ();
-  ffesymbol_terminate_0 ();
-  ffetarget_terminate_0 ();
-  ffetype_terminate_0 ();
-  ffewhere_terminate_0 ();
-}
-
-/* ffe_terminate_1 -- Terminate the FFE after seeing source file EOF
-
-   ffe_terminate_1();  */
-
-void
-ffe_terminate_1 ()
-{
-  ffe_count_2 = 0;
-  ffe_in_1 = FALSE;
-
-  ffe_terminate_2 ();
-
-  ffebad_terminate_1 ();
-  ffebit_terminate_1 ();
-  ffebld_terminate_1 ();
-  ffecom_terminate_1 ();
-  ffedata_terminate_1 ();
-  ffeequiv_terminate_1 ();
-  ffeexpr_terminate_1 ();
-  ffeglobal_terminate_1 ();
-  ffeimplic_terminate_1 ();
-  ffeinfo_terminate_1 ();
-  ffeintrin_terminate_1 ();
-  ffelab_terminate_1 ();
-  ffelex_terminate_1 ();
-  ffename_terminate_1 ();
-  ffesrc_terminate_1 ();
-  ffest_terminate_1 ();
-  ffestorag_terminate_1 ();
-  ffesymbol_terminate_1 ();
-  ffetarget_terminate_1 ();
-  ffetype_terminate_1 ();
-  ffewhere_terminate_1 ();
-
-  assert (ffe_file_pool_ != NULL);
-  malloc_pool_kill (ffe_file_pool_);
-  ffe_file_pool_ = NULL;
-}
-
-/* ffe_terminate_2 -- Terminate the FFE after seeing outer program unit END
-
-   ffe_terminate_2();  */
-
-void
-ffe_terminate_2 ()
-{
-  ffe_count_3 = 0;
-  ffe_in_2 = FALSE;
-
-  ffe_terminate_3 ();
-
-  ffebad_terminate_2 ();
-  ffebit_terminate_2 ();
-  ffebld_terminate_2 ();
-  ffecom_terminate_2 ();
-  ffedata_terminate_2 ();
-  ffeequiv_terminate_2 ();
-  ffeexpr_terminate_2 ();
-  ffeglobal_terminate_2 ();
-  ffeimplic_terminate_2 ();
-  ffeinfo_terminate_2 ();
-  ffeintrin_terminate_2 ();
-  ffelab_terminate_2 ();
-  ffelex_terminate_2 ();
-  ffename_terminate_2 ();
-  ffesrc_terminate_2 ();
-  ffest_terminate_2 ();
-  ffestorag_terminate_2 ();
-  ffesymbol_terminate_2 ();
-  ffetarget_terminate_2 ();
-  ffetype_terminate_2 ();
-  ffewhere_terminate_2 ();
-
-  assert (ffe_program_unit_pool_ != NULL);
-  malloc_pool_kill (ffe_program_unit_pool_);
-  ffe_program_unit_pool_ = NULL;
-}
-
-/* ffe_terminate_3 -- Terminate the FFE after seeing any program unit END
-
-   ffe_terminate_3();  */
-
-void
-ffe_terminate_3 ()
-{
-  ffe_count_4 = 0;
-  ffe_in_3 = FALSE;
-
-  ffebad_terminate_3 ();
-  ffebit_terminate_3 ();
-  ffebld_terminate_3 ();
-  ffecom_terminate_3 ();
-  ffedata_terminate_3 ();
-  ffeequiv_terminate_3 ();
-  ffeexpr_terminate_3 ();
-  ffeglobal_terminate_3 ();
-  ffeimplic_terminate_3 ();
-  ffeinfo_terminate_3 ();
-  ffeintrin_terminate_3 ();
-  ffelab_terminate_3 ();
-  ffelex_terminate_3 ();
-  ffename_terminate_3 ();
-  ffesrc_terminate_3 ();
-  ffest_terminate_3 ();
-  ffestorag_terminate_3 ();
-  ffesymbol_terminate_3 ();
-  ffetarget_terminate_3 ();
-  ffetype_terminate_3 ();
-  ffewhere_terminate_3 ();
-
-  assert (ffe_any_unit_pool_ != NULL);
-  malloc_pool_kill (ffe_any_unit_pool_);
-  ffe_any_unit_pool_ = NULL;
-}
-
-/* ffe_terminate_4 -- Terminate the FFE after seeing sfunc def expression
-
-   ffe_terminate_4();  */
-
-void
-ffe_terminate_4 ()
-{
-  ffe_in_4 = FALSE;
-
-  ffebad_terminate_4 ();
-  ffebit_terminate_4 ();
-  ffebld_terminate_4 ();
-  ffecom_terminate_4 ();
-  ffedata_terminate_4 ();
-  ffeequiv_terminate_4 ();
-  ffeexpr_terminate_4 ();
-  ffeglobal_terminate_4 ();
-  ffeimplic_terminate_4 ();
-  ffeinfo_terminate_4 ();
-  ffeintrin_terminate_4 ();
-  ffelab_terminate_4 ();
-  ffelex_terminate_4 ();
-  ffename_terminate_4 ();
-  ffesrc_terminate_4 ();
-  ffest_terminate_4 ();
-  ffestorag_terminate_4 ();
-  ffesymbol_terminate_4 ();
-  ffetarget_terminate_4 ();
-  ffetype_terminate_4 ();
-  ffewhere_terminate_4 ();
-}