diff options
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r-- | gcc/toplev.c | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c index cce00eecb95..ea4631a5cd1 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -633,6 +633,10 @@ int flag_exceptions; int flag_new_exceptions = 1; +/* Nonzero means generate frame unwind info table when supported */ + +int flag_unwind_tables = 0; + /* Nonzero means don't place uninitialized global data in common storage by default. */ @@ -937,6 +941,8 @@ lang_independent_options f_options[] = "Enable exception handling" }, {"new-exceptions", &flag_new_exceptions, 1, "Use the new model for exception handling" }, + {"unwind-tables", &flag_unwind_tables, 1, + "Just generate unwind tables for exception handling" }, {"sjlj-exceptions", &exceptions_via_longjmp, 1, "Use setjmp/longjmp to handle exceptions" }, {"asynchronous-exceptions", &asynchronous_exceptions, 1, @@ -3571,8 +3577,21 @@ rest_of_compilation (decl) if (DECL_SAVED_INSNS (decl) == 0) { int inlinable = 0; + tree parent; const char *lose; + /* If this is nested inside an inlined external function, pretend + it was only declared. Since we cannot inline such functions, + generating code for this one is not only not necessary but will + confuse some debugging output writers. */ + for (parent = DECL_CONTEXT (current_function_decl); + parent != 0; parent = DECL_CONTEXT (parent)) + if (DECL_INLINE (parent) && DECL_EXTERNAL (parent)) + { + DECL_INITIAL (decl) = 0; + goto exit_rest_of_compilation; + } + /* If requested, consider whether to make this function inline. */ if (DECL_INLINE (decl) || flag_inline_functions) TIMEVAR (integration_time, @@ -4929,6 +4948,7 @@ decode_W_option (arg) /* Parse a -g... comand line switch. ARG is the value after the -g. It is safe to access 'ARG - 2' to generate the full switch name. Return the number of strings consumed. */ + static int decode_g_option (arg) const char * arg; @@ -5012,8 +5032,7 @@ ignoring option `%s' due to invalid debug level specification", } if (type == NO_DEBUG) - warning ("`%s' not supported by this configuration of GCC", - arg - 2); + warning ("`%s': unknown or unsupported -g option", arg - 2); /* Does it conflict with an already selected type? */ if (type_explicitly_set_p @@ -5046,7 +5065,7 @@ ignoring option `%s' due to invalid debug level specification", } if (! da->arg) - warning ("`%s' not supported by this configuration of GCC", arg - 2); + warning ("`%s': unknown or unsupported -g option", arg - 2); return 1; } |