aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-12-24 17:41:11 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1995-12-24 17:41:11 -0500
commitec6c615d6445624fb01aa9345acf7353a51587f3 (patch)
tree5cb8f44869e3e0db45ba771b6b8b536158672a28
parent47288231ca14a839b20c0140bd5349207e506f6c (diff)
downloadgcc-ec6c615d6445624fb01aa9345acf7353a51587f3.zip
gcc-ec6c615d6445624fb01aa9345acf7353a51587f3.tar.gz
gcc-ec6c615d6445624fb01aa9345acf7353a51587f3.tar.bz2
(main): Add -ax option.
From-SVN: r10848
-rw-r--r--gcc/toplev.c34
1 files changed, 26 insertions, 8 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c
index db70772..6da56cd 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)