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

📄 toplev.c

📁 早期freebsd实现
💻 C
📖 第 1 页 / 共 5 页
字号:
  {"caller-saves", &flag_caller_saves, 1},  {"pcc-struct-return", &flag_pcc_struct_return, 1},  {"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}};/* Table of language-specific options.  */char *lang_options[] ={  "-ftraditional",  "-traditional",  "-fnotraditional",  "-fno-traditional",  "-fsigned-char",  "-funsigned-char",  "-fno-signed-char",  "-fno-unsigned-char",  "-fsigned-bitfields",  "-funsigned-bitfields",  "-fno-signed-bitfields",  "-fno-unsigned-bitfields",  "-fshort-enums",  "-fno-short-enums",  "-fcond-mismatch",  "-fno-cond-mismatch",  "-fshort-double",  "-fno-short-double",  "-fasm",  "-fno-asm",  "-fbuiltin",  "-fno-builtin",  "-fno-ident",  "-fident",  "-ansi",  "-Wimplicit",  "-Wno-implicit",  "-Wwrite-strings",  "-Wno-write-strings",  "-Wcast-qual",  "-Wno-cast-qual",  "-Wpointer-arith",  "-Wno-pointer-arith",  "-Wstrict-prototypes",  "-Wno-strict-prototypes",  "-Wmissing-prototypes",  "-Wno-missing-prototypes",  "-Wredundant-decls",  "-Wno-redundant-decls",  "-Wnested-externs",  "-Wno-nested-externs",  "-Wtraditional",  "-Wno-traditional",  "-Wformat",  "-Wno-format",  "-Wchar-subscripts",  "-Wno-char-subscripts",  "-Wconversion",  "-Wno-conversion",  "-Wparentheses",  "-Wno-parentheses",  "-Wcomment",  "-Wno-comment",  "-Wcomments",  "-Wno-comments",  "-Wtrigraphs",  "-Wno-trigraphs",  "-Wimport",  "-Wno-import",  "-Wall",  /* These are for C++.  */  "-+e0",			/* gcc.c tacks the `-' on the front.  */  "-+e1",  "-+e2",  "-fsave-memoized",  "-fno-save-memoized",  "-fSOS",  "-fno-SOS",  "-fcadillac",  "-fno-cadillac",  "-fgc",  "-fno-gc",  "-flabels-ok",  "-fno-labels-ok",  "-fstats",  "-fno-stats",  "-fthis-is-variable",  "-fno-this-is-variable",  "-fstrict-prototype",  "-fno-strict-prototype",  "-fall-virtual",  "-fno-all-virtual",  "-fmemoize-lookups",  "-fno-memoize-lookups",  "-felide-constructors",  "-fno-elide-constructors",  "-finline-debug",  "-fno-inline-debug",  "-fhandle-exceptions",  "-fno-handle-exceptions",  "-fansi-exceptions",  "-fno-ansi-exceptions",  "-fspring-exceptions",  "-fno-spring-exceptions",  "-fdefault-inline",  "-fno-default-inline",  "-fenum-int-equiv",  "-fno-enum-int-equiv",  "-fdossier",  "-fno-dossier",  "-fxref",  "-fno-xref",  "-fnonnull-objects",  "-fno-nonnull-objects",  "-Wreturn-type",  "-Wno-return-type",  "-Woverloaded-virtual",  "-Wno-overloaded-virtual",  "-Wenum-clash",  "-Wno-enum-clash",  /* these are for obj c */  "-lang-objc",  "-gen-decls",  "-Wselector",  "-Wno-selector",  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;int id_clash_len;/* 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 (){#ifdef USG  struct tms tms;#else#ifndef VMS  struct rusage rusage;#else /* VMS */  struct    {      int proc_user_time;      int proc_system_time;      int child_user_time;      int child_system_time;    } vms_times;#endif#endif  if (quiet_flag)    return 0;#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}#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 (35);}voidfatal_io_error (name)     char *name;{  fprintf (stderr, "%s: %s: I/O error\n", progname, name);  exit (35);}voidfatal (s, v)     char *s;     int v;{  error (s, v);  exit (34);}/* 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)    error ("internal error--unrecognizable insn:", 0);  else    error ("internal error--insn does not satisfy its constraints:", 0);  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 ();}/* This is the default decl_printable_name function.  */static char *decl_name (decl, kind)     tree decl;     char **kind;{  return IDENTIFIER_POINTER (DECL_NAME (decl));}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;    }}/* Prints out, if necessary, the name of the current function   which 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");      need_error_newline = 0;    }  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;

⌨️ 快捷键说明

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