OSDN Git Service

* timevar.def: Add TV_EXPAND.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Jun 2000 16:23:47 +0000 (16:23 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Jun 2000 16:23:47 +0000 (16:23 +0000)
        * timevar.c (timevar_print): Update timing information.
        * calls.c (try_to_integrate): Push to TV_INTEGRATION for inlining.

        * stmt.c (expand_return): Check for error_mark_node.

cp/:
        * semantics.c (expand_body): Push to TV_EXPAND.
        * optimize.c (optimize_function): Push to TV_INTEGRATION.
        * decl.c (start_function): Always call announce_function.

        * tinfo2.cc: Just declare abort.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34470 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/calls.c
gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/optimize.c
gcc/cp/semantics.c
gcc/cp/tinfo2.cc
gcc/stmt.c
gcc/timevar.c
gcc/timevar.def

index fcfa5db..eb2a6ba 100644 (file)
@@ -1,3 +1,11 @@
+2000-06-09  Jason Merrill  <jason@casey.soma.redhat.com>
+
+       * timevar.def: Add TV_EXPAND.
+       * timevar.c (timevar_print): Update timing information.
+       * calls.c (try_to_integrate): Push to TV_INTEGRATION for inlining.
+
+       * stmt.c (expand_return): Check for error_mark_node.
+
 2000-06-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * configure.in: Also avoid wrapping auto-build.h with IN_GCC.
index 3d49d3e..27bd5fc 100644 (file)
@@ -31,6 +31,7 @@ Boston, MA 02111-1307, USA.  */
 #include "toplev.h"
 #include "output.h"
 #include "tm_p.h"
+#include "timevar.h"
 
 #ifndef ACCUMULATE_OUTGOING_ARGS
 #define ACCUMULATE_OUTGOING_ARGS 0
@@ -1733,7 +1734,7 @@ load_register_parameters (args, num_actuals, call_fusage, flags)
     }
 }
 
-/* Try to integreate function.  See expand_inline_function for documentation
+/* Try to integrate function.  See expand_inline_function for documentation
    about the parameters.  */
 
 static rtx
@@ -1761,10 +1762,14 @@ try_to_integrate (fndecl, actparms, target, ignore, type, structure_value_addr)
 
   before_call = get_last_insn ();
 
+  timevar_push (TV_INTEGRATION);
+
   temp = expand_inline_function (fndecl, actparms, target,
                                 ignore, type,
                                 structure_value_addr);
 
+  timevar_pop (TV_INTEGRATION);
+
   /* If inlining succeeded, return.  */
   if (temp != (rtx) (HOST_WIDE_INT) - 1)
     {
index 79995c5..b05f339 100644 (file)
@@ -1,3 +1,11 @@
+2000-06-09  Jason Merrill  <jason@casey.soma.redhat.com>
+
+       * semantics.c (expand_body): Push to TV_EXPAND.
+       * optimize.c (optimize_function): Push to TV_INTEGRATION.
+       * decl.c (start_function): Always call announce_function.
+
+       * tinfo2.cc: Just declare abort.
+
 2000-06-09  Gabriel Dos Reis  <gdr@codesourcery.com>
 
        * lex.c (DEF_OPERATOR): Say `operator@' -not- `operator @'
index 22bdb9d..73e5a61 100644 (file)
@@ -13649,8 +13649,7 @@ start_function (declspecs, declarator, attrs, flags)
     begin_stmt_tree (&DECL_SAVED_TREE (decl1));
 
   /* Let the user know we're compiling this function.  */
-  if (processing_template_decl || !building_stmt_tree ())
-    announce_function (decl1);
+  announce_function (decl1);
 
   /* Record the decl so that the function name is defined.
      If we already have a decl for this name, and it is a FUNCTION_DECL,
index 52292ff..b446207 100644 (file)
@@ -28,6 +28,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "input.h"
 #include "integrate.h"
 #include "varray.h"
+#include "timevar.h"
 
 /* To Do:
 
@@ -806,6 +807,8 @@ optimize_function (fn)
       tree prev_fn;
       struct saved_scope *s;
 
+      timevar_push (TV_INTEGRATION);
+      
       /* Clear out ID.  */
       memset (&id, 0, sizeof (id));
 
@@ -836,6 +839,8 @@ optimize_function (fn)
       /* Clean up.  */
       VARRAY_FREE (id.fns);
       VARRAY_FREE (id.target_exprs);
+
+      timevar_pop (TV_INTEGRATION);
     }
 }
 
index 505c487..7d9e1da 100644 (file)
@@ -35,6 +35,7 @@
 #include "ggc.h"
 #include "rtl.h"
 #include "output.h"
+#include "timevar.h"
 
 /* There routines provide a modular interface to perform many parsing
    operations.  They may therefore be used during actual parsing, or
@@ -2788,6 +2789,8 @@ expand_body (fn)
       return;
     }
 
+  timevar_push (TV_EXPAND);
+
   /* Optimize the body of the function before expanding it.  */
   optimize_function (fn);
 
@@ -2838,4 +2841,6 @@ expand_body (fn)
   /* And restore the current source position.  */
   lineno = saved_lineno;
   input_filename = saved_input_filename;
+
+  timevar_pop (TV_EXPAND);
 }
index f89980a..39fe98c 100644 (file)
 // the GNU General Public License.
 
 #include <stddef.h>
-#include <stdlib.h>            // for abort
 #include "tinfo.h"
 #include "new"                 // for placement new
 
+// We can't rely on having stdlib.h if we're freestanding.
+extern "C" void abort ();
+
 using std::type_info;
 
 #if !defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100
index fe0d58e..41a1b4f 100644 (file)
@@ -2844,7 +2844,9 @@ expand_return (retval)
   cleanups = 1;
 #endif
 
-  if (TREE_CODE (retval) == RESULT_DECL)
+  if (retval == error_mark_node)
+    retval_rhs = NULL_TREE;
+  else if (TREE_CODE (retval) == RESULT_DECL)
     retval_rhs = retval;
   else if ((TREE_CODE (retval) == MODIFY_EXPR || TREE_CODE (retval) == INIT_EXPR)
           && TREE_CODE (TREE_OPERAND (retval, 0)) == RESULT_DECL)
index 756365b..44ea96f 100644 (file)
@@ -405,10 +405,28 @@ timevar_print (fp)
 #if defined (HAVE_USER_TIME) || defined (HAVE_SYS_TIME) || defined (HAVE_WALL_TIME)
   timevar_id_t id;
   struct timevar_time_def *total = &timevars[TV_TOTAL].elapsed;
+  struct timevar_time_def now;
 
   if (!TIMEVAR_ENABLE)
     return;
 
+  /* Update timing information in case we're calling this from GDB.  */
+
+  if (fp == 0)
+    fp = stderr;
+
+  /* What time is it?  */
+  get_time (&now);
+
+  /* If the stack isn't empty, attribute the current elapsed time to
+     the old topmost element.  */
+  if (stack)
+    timevar_accumulate (&stack->timevar->elapsed, &start_time, &now);
+
+  /* Reset the start time; from now on, time is attributed to
+     TIMEVAR. */
+  start_time = now;
+
   fprintf (fp, "\nExecution times (seconds)\n");
   for (id = 0; id < TIMEVAR_LAST; ++id)
     {
index fcf2177..2f3458a 100644 (file)
@@ -41,6 +41,7 @@ DEFTIMEVAR (TV_DUMP                  , "dump files")
 
 /* Timing in various stages of the compiler.  */
 DEFTIMEVAR (TV_PARSE                 , "parser")
+DEFTIMEVAR (TV_EXPAND               , "expand")
 DEFTIMEVAR (TV_VARCONST              , "varconst")
 DEFTIMEVAR (TV_INTEGRATION           , "integration")
 DEFTIMEVAR (TV_JUMP                  , "jump")