From: Richard Kenner Date: Sun, 24 Dec 1995 22:41:11 +0000 (-0500) Subject: (main): Add -ax option. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ec6c615d6445624fb01aa9345acf7353a51587f3;p=gcc.git (main): Add -ax option. From-SVN: r10848 --- diff --git a/gcc/toplev.c b/gcc/toplev.c index db70772890a..6da56cd17fc 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -2714,13 +2714,16 @@ rest_of_compilation (decl) compile it by itself, defer decision till end of compilation. finish_compilation will call rest_of_compilation again for those functions that need to be output. Also defer those - functions that we are supposed to defer. */ - - if (DECL_DEFER_OUTPUT (decl) - || ((specd || DECL_INLINE (decl)) - && ((! TREE_PUBLIC (decl) && ! TREE_ADDRESSABLE (decl) - && ! flag_keep_inline_functions) - || DECL_EXTERNAL (decl)))) + functions that we are supposed to defer. We cannot defer + functions containing nested functions since the nested function + data is in our non-saved obstack. */ + + if (! current_function_contains_functions + && (DECL_DEFER_OUTPUT (decl) + || ((specd || DECL_INLINE (decl)) + && ((! TREE_PUBLIC (decl) && ! TREE_ADDRESSABLE (decl) + && ! flag_keep_inline_functions) + || DECL_EXTERNAL (decl))))) { DECL_DEFER_OUTPUT (decl) = 1; @@ -3667,7 +3670,16 @@ main (argc, argv, envp) #if !defined (BLOCK_PROFILER) || !defined (FUNCTION_BLOCK_PROFILER) warning ("`-a' option (basic block profile) not supported"); #else - profile_block_flag = 1; + profile_block_flag = (profile_block_flag < 2) ? 1 : 3; +#endif + } + else if (!strcmp (str, "ax")) + { +#if !defined (FUNCTION_BLOCK_PROFILER_EXIT) || !defined (BLOCK_PROFILER) || !defined (FUNCTION_BLOCK_PROFILER) + warning ("`-ax' option (jump profiling) not supported"); +#else + profile_block_flag = (!profile_block_flag + || profile_block_flag == 2) ? 2 : 3; #endif } else if (str[0] == 'g') @@ -3861,6 +3873,12 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE! OVERRIDE_OPTIONS; #endif + if (profile_block_flag == 3) + { + warning ("`-ax' and `-a' are conflicting options. `-a' ignored."); + profile_block_flag = 2; + } + /* Unrolling all loops implies that standard loop unrolling must also be done. */ if (flag_unroll_all_loops)