(main): Add -ax option.
authorRichard Kenner <kenner@gcc.gnu.org>
Sun, 24 Dec 1995 22:41:11 +0000 (17:41 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Sun, 24 Dec 1995 22:41:11 +0000 (17:41 -0500)
From-SVN: r10848

gcc/toplev.c

index db70772890acda2abffbecee64abac283aff9921..6da56cd17fc60ed86c640ca38ed96b5abb947608 100644 (file)
@@ -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)