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

📄 toplev.c

📁 gcc库的原代码,对编程有很大帮助.
💻 C
📖 第 1 页 / 共 5 页
字号:
   STRING is the option name.  VARIABLE is the address of the variable.   ON_VALUE is the value to store in VARIABLE    if `-fSTRING' is seen as an option.   (If `-fno-STRING' is seen as an option, the opposite value is stored.)  */struct { char *string; int *variable; int on_value;} f_options[] ={  {"float-store", &flag_float_store, 1},  {"volatile", &flag_volatile, 1},  {"volatile-global", &flag_volatile_global, 1},  {"defer-pop", &flag_defer_pop, 1},  {"omit-frame-pointer", &flag_omit_frame_pointer, 1},  {"cse-follow-jumps", &flag_cse_follow_jumps, 1},  {"cse-skip-blocks", &flag_cse_skip_blocks, 1},  {"expensive-optimizations", &flag_expensive_optimizations, 1},  {"thread-jumps", &flag_thread_jumps, 1},  {"strength-reduce", &flag_strength_reduce, 1},  {"unroll-loops", &flag_unroll_loops, 1},  {"unroll-all-loops", &flag_unroll_all_loops, 1},  {"writable-strings", &flag_writable_strings, 1},  {"peephole", &flag_no_peephole, 0},  {"force-mem", &flag_force_mem, 1},  {"force-addr", &flag_force_addr, 1},  {"function-cse", &flag_no_function_cse, 0},  {"inline-functions", &flag_inline_functions, 1},  {"keep-inline-functions", &flag_keep_inline_functions, 1},  {"inline", &flag_no_inline, 0},  {"syntax-only", &flag_syntax_only, 1},  {"shared-data", &flag_shared_data, 1},  {"caller-saves", &flag_caller_saves, 1},  {"pcc-struct-return", &flag_pcc_struct_return, 1},  {"reg-struct-return", &flag_pcc_struct_return, 0},  {"delayed-branch", &flag_delayed_branch, 1},  {"rerun-cse-after-loop", &flag_rerun_cse_after_loop, 1},  {"pretend-float", &flag_pretend_float, 1},  {"schedule-insns", &flag_schedule_insns, 1},  {"schedule-insns2", &flag_schedule_insns_after_reload, 1},  {"pic", &flag_pic, 1},  {"PIC", &flag_pic, 2},  {"fast-math", &flag_fast_math, 1},  {"common", &flag_no_common, 0},  {"inhibit-size-directive", &flag_inhibit_size_directive, 1},  {"verbose-asm", &flag_verbose_asm, 1},  {"gnu-linker", &flag_gnu_linker, 1},  {"pack-struct", &flag_pack_struct, 1},  {"bytecode", &output_bytecode, 1}};/* Table of language-specific options.  */char *lang_options[] ={  "-ansi",  "-fallow-single-precision",  "-fsigned-bitfields",  "-funsigned-bitfields",  "-fno-signed-bitfields",  "-fno-unsigned-bitfields",  "-fsigned-char",  "-funsigned-char",  "-fno-signed-char",  "-fno-unsigned-char",  "-ftraditional",  "-traditional",  "-fnotraditional",  "-fno-traditional",  "-fasm",  "-fno-asm",  "-fbuiltin",  "-fno-builtin",  "-fcond-mismatch",  "-fno-cond-mismatch",  "-fdollars-in-identifiers",  "-fno-dollars-in-identifiers",  "-fident",  "-fno-ident",  "-fshort-double",  "-fno-short-double",  "-fshort-enums",  "-fno-short-enums",  "-Wall",  "-Wbad-function-cast",  "-Wno-bad-function-cast",  "-Wcast-qual",  "-Wno-cast-qual",  "-Wchar-subscripts",  "-Wno-char-subscripts",  "-Wcomment",  "-Wno-comment",  "-Wcomments",  "-Wno-comments",  "-Wconversion",  "-Wno-conversion",  "-Wformat",  "-Wno-format",  "-Wimport",  "-Wno-import",  "-Wimplicit",  "-Wno-implicit",  "-Wmissing-braces",  "-Wno-missing-braces",  "-Wmissing-declarations",  "-Wno-missing-declarations",  "-Wmissing-prototypes",  "-Wno-missing-prototypes",  "-Wnested-externs",  "-Wno-nested-externs",  "-Wparentheses",  "-Wno-parentheses",  "-Wpointer-arith",  "-Wno-pointer-arith",  "-Wredundant-decls",  "-Wno-redundant-decls",  "-Wstrict-prototypes",  "-Wno-strict-prototypes",  "-Wtraditional",  "-Wno-traditional",  "-Wtrigraphs",  "-Wno-trigraphs",  "-Wwrite-strings",  "-Wno-write-strings",  /* these are for obj c */  "-lang-objc",  "-gen-decls",  "-fgnu-runtime",  "-fno-gnu-runtime",  "-fnext-runtime",  "-fno-next-runtime",  "-Wselector",  "-Wno-selector",  "-Wprotocol",  "-Wno-protocol",#include "options.h"  0};/* Options controlling warnings *//* Don't print warning messages.  -w.  */int inhibit_warnings = 0;/* Print various extra warnings.  -W.  */int extra_warnings = 0;/* Treat warnings as errors.  -Werror.  */int warnings_are_errors = 0;/* Nonzero to warn about unused local variables.  */int warn_unused;/* Nonzero to warn about variables used before they are initialized.  */int warn_uninitialized;/* Nonzero means warn about all declarations which shadow others.   */int warn_shadow;/* Warn if a switch on an enum fails to have a case for every enum value.  */int warn_switch;/* Nonzero means warn about function definitions that default the return type   or that use a null return and have a return-type other than void.  */int warn_return_type;/* Nonzero means warn about pointer casts that increase the required   alignment of the target type (and might therefore lead to a crash   due to a misaligned access).  */int warn_cast_align;/* Nonzero means warn about any identifiers that match in the first N   characters.  The value N is in `id_clash_len'.  */int warn_id_clash;unsigned id_clash_len;/* Nonzero means warn about any objects definitions whose size is larger   than N bytes.  Also want about function definitions whose returned   values are larger than N bytes. The value N is in `larger_than_size'.  */ int warn_larger_than;unsigned larger_than_size;/* Nonzero means warn if inline function is too large.  */int warn_inline;/* Warn if a function returns an aggregate,   since there are often incompatible calling conventions for doing this.  */int warn_aggregate_return;/* Likewise for -W.  */struct { char *string; int *variable; int on_value;} W_options[] ={  {"unused", &warn_unused, 1},  {"error", &warnings_are_errors, 1},  {"shadow", &warn_shadow, 1},  {"switch", &warn_switch, 1},  {"aggregate-return", &warn_aggregate_return, 1},  {"cast-align", &warn_cast_align, 1},  {"uninitialized", &warn_uninitialized, 1},  {"inline", &warn_inline, 1}};/* Output files for assembler code (real compiler output)   and debugging dumps.  */FILE *asm_out_file;FILE *aux_info_file;FILE *rtl_dump_file;FILE *jump_opt_dump_file;FILE *cse_dump_file;FILE *loop_dump_file;FILE *cse2_dump_file;FILE *flow_dump_file;FILE *combine_dump_file;FILE *sched_dump_file;FILE *local_reg_dump_file;FILE *global_reg_dump_file;FILE *sched2_dump_file;FILE *jump2_opt_dump_file;FILE *dbr_sched_dump_file;FILE *stack_reg_dump_file;/* Time accumulators, to count the total time spent in various passes.  */int parse_time;int varconst_time;int integration_time;int jump_time;int cse_time;int loop_time;int cse2_time;int flow_time;int combine_time;int sched_time;int local_alloc_time;int global_alloc_time;int sched2_time;int dbr_sched_time;int shorten_branch_time;int stack_reg_time;int final_time;int symout_time;int dump_time;/* Return time used so far, in microseconds.  */intget_run_time (){#ifndef _WIN32#ifdef USG  struct tms tms;#else#ifndef VMS  struct rusage rusage;#else  struct    {      int proc_user_time;      int proc_system_time;      int child_user_time;      int child_system_time;    } vms_times;#endif#endif#endif  if (quiet_flag)    return 0;#ifdef _WIN32  if (clock() < 0)    return 0;  else    return (clock() * 1000);#else /* not _WIN32 */#ifdef USG  times (&tms);  return (tms.tms_utime + tms.tms_stime) * (1000000 / HZ);#else#ifndef VMS  getrusage (0, &rusage);  return (rusage.ru_utime.tv_sec * 1000000 + rusage.ru_utime.tv_usec	  + rusage.ru_stime.tv_sec * 1000000 + rusage.ru_stime.tv_usec);#else /* VMS */  times (&vms_times);  return (vms_times.proc_user_time + vms_times.proc_system_time) * 10000;#endif#endif#endif}#define TIMEVAR(VAR, BODY)    \do { int otime = get_run_time (); BODY; VAR += get_run_time () - otime; } while (0)voidprint_time (str, total)     char *str;     int total;{  fprintf (stderr,	   "time in %s: %d.%06d\n",	   str, total / 1000000, total % 1000000);}/* Count an error or warning.  Return 1 if the message should be printed.  */intcount_error (warningp)     int warningp;{  if (warningp && inhibit_warnings)    return 0;  if (warningp && !warnings_are_errors)    warningcount++;  else    {      static int warning_message = 0;      if (warningp && !warning_message)	{	  fprintf (stderr, "%s: warnings being treated as errors\n", progname);	  warning_message = 1;	}      errorcount++;    }  return 1;}/* Print a fatal error message.  NAME is the text.   Also include a system error message based on `errno'.  */voidpfatal_with_name (name)     char *name;{  fprintf (stderr, "%s: ", progname);  perror (name);  exit (FATAL_EXIT_CODE);}voidfatal_io_error (name)     char *name;{  fprintf (stderr, "%s: %s: I/O error\n", progname, name);  exit (FATAL_EXIT_CODE);}/* Called to give a better error message for a bad insn rather than   just calling abort().  */voidfatal_insn (message, insn)     char *message;     rtx insn;{  if (!output_bytecode)    {      error (message);      debug_rtx (insn);    }  if (asm_out_file)    fflush (asm_out_file);  if (aux_info_file)    fflush (aux_info_file);  if (rtl_dump_file)    fflush (rtl_dump_file);  if (jump_opt_dump_file)    fflush (jump_opt_dump_file);  if (cse_dump_file)    fflush (cse_dump_file);  if (loop_dump_file)    fflush (loop_dump_file);  if (cse2_dump_file)    fflush (cse2_dump_file);  if (flow_dump_file)    fflush (flow_dump_file);  if (combine_dump_file)    fflush (combine_dump_file);  if (sched_dump_file)    fflush (sched_dump_file);  if (local_reg_dump_file)    fflush (local_reg_dump_file);  if (global_reg_dump_file)    fflush (global_reg_dump_file);  if (sched2_dump_file)    fflush (sched2_dump_file);  if (jump2_opt_dump_file)    fflush (jump2_opt_dump_file);  if (dbr_sched_dump_file)    fflush (dbr_sched_dump_file);  if (stack_reg_dump_file)    fflush (stack_reg_dump_file);  abort ();}/* Called to give a better error message when we don't have an insn to match   what we are looking for or if the insn's constraints aren't satisfied,   rather than just calling abort().  */voidfatal_insn_not_found (insn)     rtx insn;{  if (INSN_CODE (insn) < 0)    fatal_insn ("internal error--unrecognizable insn:", insn);  else    fatal_insn ("internal error--insn does not satisfy its constraints:", insn);}/* This is the default decl_printable_name function.  */static char *decl_name (decl, kind)     tree decl;     char **kind;{  return IDENTIFIER_POINTER (DECL_NAME (decl));}/* This is the default interim_eh_hook function.  */voidinterim_eh (finalization)     tree finalization;{  /* Don't do anything by default.  */}static int need_error_newline;/* Function of last error message;   more generally, function such that if next error message is in it   then we don't have to mention the function name.  */static tree last_error_function = NULL;/* Used to detect when input_file_stack has changed since last described.  */static int last_error_tick;/* Called when the start of a function definition is parsed,   this function prints on stderr the name of the function.  */voidannounce_function (decl)     tree decl;{  if (! quiet_flag)    {      char *junk;      if (rtl_dump_and_exit)	fprintf (stderr, "%s ", IDENTIFIER_POINTER (DECL_NAME (decl)));      else	fprintf (stderr, " %s", (*decl_printable_name) (decl, &junk));      fflush (stderr);      need_error_newline = 1;      last_error_function = current_function_decl;    }}/* The default function to print out name of current function that caused   an error.  */voiddefault_print_error_function (file)     char *file;{  if (last_error_function != current_function_decl)    {      char *kind = "function";      if (current_function_decl != 0	  && TREE_CODE (TREE_TYPE (current_function_decl)) == METHOD_TYPE)	kind = "method";      if (file)	fprintf (stderr, "%s: ", file);      if (current_function_decl == NULL)	fprintf (stderr, "At top level:\n");      else	{	  char *name = (*decl_printable_name) (current_function_decl, &kind);	  fprintf (stderr, "In %s `%s':\n", kind, name);	}      last_error_function = current_function_decl;    }}/* Called by report_error_function to print out function name. * Default may be overridden by language front-ends. */void (*print_error_function) PROTO((char*)) = default_print_error_function;/* Prints out, if necessary, the name of the current function  that caused an error.  Called from all error and warning functions.  */voidreport_error_function (file)     char *file;{  struct file_stack *p;  if (need_error_newline)    {      fprintf (stderr, "\n");

⌨️ 快捷键说明

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