⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 top.c

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 C
📖 第 1 页 / 共 2 页
字号:
/* top.c -- Implementation File (module.c template V1.0)   Copyright (C) 1995-1997 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 modifyit under the terms of the GNU General Public License as published bythe 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 ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU Fortran; see the file COPYING.  If not, write tothe Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA02111-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"#if FFECOM_targetCURRENT == FFECOM_targetGCC#include "flags.j"#include "toplev.j"#endif/* 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_null_version_ = FALSE;bool ffe_is_onetrip_ = FALSE;bool ffe_is_silent_ = TRUE;bool ffe_is_subscript_check_ = FALSE;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. */static boolffe_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.  */intffe_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], "null-version") == 0)	ffe_set_is_null_version (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);      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)	ffe_set_is_debug_kludge (TRUE);      else if (strcmp (&opt[2], "no-debug-kludge") == 0)	ffe_set_is_debug_kludge (FALSE);      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], "bounds-check") == 0)	ffe_set_is_subscript_check (TRUE);      else if (strcmp (&opt[2], "no-bounds-check") == 0)	ffe_set_is_subscript_check (FALSE);      else if (strcmp (&opt[2], "fortran-bounds-check") == 0)	ffe_set_is_subscript_check (TRUE);      else if (strcmp (&opt[2], "no-fortran-bounds-check") == 0)	ffe_set_is_subscript_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)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -