int flag_unwind_tables = 0;
+/* Nonzero means generate frame unwind info table exact at each insn boundary */
+
+int flag_asynchronous_unwind_tables = 0;
+
/* Nonzero means don't place uninitialized global data in common storage
by default. */
N_("Enable exception handling") },
{"unwind-tables", &flag_unwind_tables, 1,
N_("Just generate unwind tables for exception handling") },
+ {"asynchronous-unwind-tables", &flag_asynchronous_unwind_tables, 1,
+ N_("Generate unwind tables exact at each instruction boundary") },
{"non-call-exceptions", &flag_non_call_exceptions, 1,
N_("Support synchronous non-call exceptions") },
{"profile-arcs", &profile_arc_flag, 1,
lineno = input_file_stack->line;
}
-/* Compile an entire file of output from cpp, named NAME.
- Write a file of assembly output and various debugging dumps. */
+/* Compile an entire translation unit, whose primary source file is
+ named NAME. Write a file of assembly output and various debugging
+ dumps. */
static void
compile_file (name)
init_timevar ();
timevar_start (TV_TOTAL);
- /* Open assembler code output file. Do this even if -fsyntax-only is on,
+ /* Open assembly code output file. Do this even if -fsyntax-only is on,
because then the driver will have provided the name of a temporary
file or bit bucket for us. */
/* Call the parser, which parses the entire file
(calling rest_of_compilation for each function). */
+ yyparse ();
- if (yyparse () != 0)
- {
- if (errorcount == 0)
- fnotice (stderr, "Errors detected in input file (your bison.simple is out of date)\n");
-
- /* In case there were missing closebraces,
- get us back to the global binding level. */
- while (! global_bindings_p ())
- poplevel (0, 0, 0);
- }
+ /* In case there were missing block closers,
+ get us back to the global binding level. */
+ while (! global_bindings_p ())
+ poplevel (0, 0, 0);
/* Compilation is now finished except for writing
what's left of the symbol table output. */
convert_from_ssa ();
/* New registers have been created. Rescan their usage. */
reg_scan (insns, max_reg_num (), 1);
- /* Life analysis used in SSA adds log_links but these
- shouldn't be there until the flow stage, so clear
- them away. */
- clear_log_links (insns);
close_dump_file (DFI_ussa, print_rtl_with_bb, insns);
timevar_pop (TV_FROM_SSA);
register_life_up_to_date = 0;
#ifdef OPTIMIZE_MODE_SWITCHING
- timevar_push (TV_GCSE);
+ timevar_push (TV_MODE_SWITCH);
no_new_pseudos = 0;
if (optimize_mode_switching (NULL))
}
no_new_pseudos = 1;
- timevar_pop (TV_GCSE);
+ timevar_pop (TV_MODE_SWITCH);
#endif
timevar_push (TV_SCHED);
xmalloc_set_program_name (progname);
-/* LC_CTYPE determines the character set used by the terminal so it has be set
- to output messages correctly. */
-
-#ifdef HAVE_LC_MESSAGES
- setlocale (LC_CTYPE, "");
- setlocale (LC_MESSAGES, "");
-#else
- setlocale (LC_ALL, "");
-#endif
-
- (void) bindtextdomain (PACKAGE, localedir);
- (void) textdomain (PACKAGE);
+ gcc_init_libintl ();
/* Install handler for SIGFPE, which may be received while we do
compile-time floating point arithmetic. */
flag_rerun_cse_after_loop = 1;
}
+ if (flag_non_call_exceptions)
+ flag_asynchronous_unwind_tables = 1;
+ if (flag_asynchronous_unwind_tables)
+ flag_unwind_tables = 1;
+
/* Warn about options that are not supported on this machine. */
#ifndef INSN_SCHEDULING
if (flag_schedule_insns || flag_schedule_insns_after_reload)