/* Timing variables for measuring compiler performance.
- Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2003, 2004 Free Software Foundation, Inc.
Contributed by Alex Samuel <samuel@codesourcery.com>
This file is part of GCC.
information). */
#ifdef HAVE_TIMES
# if defined HAVE_DECL_TIMES && !HAVE_DECL_TIMES
- extern clock_t times PARAMS ((struct tms *));
+ extern clock_t times (struct tms *);
# endif
# define USE_TIMES
# define HAVE_USER_TIME
#else
#ifdef HAVE_GETRUSAGE
# if defined HAVE_DECL_GETRUSAGE && !HAVE_DECL_GETRUSAGE
- extern int getrusage PARAMS ((int, struct rusage *));
+ extern int getrusage (int, struct rusage *);
# endif
# define USE_GETRUSAGE
# define HAVE_USER_TIME
#else
#ifdef HAVE_CLOCK
# if defined HAVE_DECL_CLOCK && !HAVE_DECL_CLOCK
- extern clock_t clock PARAMS ((void));
+ extern clock_t clock (void);
# endif
# define USE_CLOCK
# define HAVE_USER_TIME
#include "flags.h"
#include "timevar.h"
-static bool timevar_enable;
+bool timevar_enable;
/* See timevar.h for an explanation of timing variables. */
element. */
static struct timevar_time_def start_time;
-static void get_time
- PARAMS ((struct timevar_time_def *));
-static void timevar_accumulate
- PARAMS ((struct timevar_time_def *, struct timevar_time_def *,
- struct timevar_time_def *));
+static void get_time (struct timevar_time_def *);
+static void timevar_accumulate (struct timevar_time_def *,
+ struct timevar_time_def *,
+ struct timevar_time_def *);
/* Fill the current times into TIME. The definition of this function
also defines any or all of the HAVE_USER_TIME, HAVE_SYS_TIME, and
HAVE_WALL_TIME macros. */
static void
-get_time (now)
- struct timevar_time_def *now;
+get_time (struct timevar_time_def *now)
{
now->user = 0;
now->sys = 0;
/* Add the difference between STOP_TIME and START_TIME to TIMER. */
static void
-timevar_accumulate (timer, start_time, stop_time)
- struct timevar_time_def *timer;
- struct timevar_time_def *start_time;
- struct timevar_time_def *stop_time;
+timevar_accumulate (struct timevar_time_def *timer,
+ struct timevar_time_def *start_time,
+ struct timevar_time_def *stop_time)
{
timer->user += stop_time->user - start_time->user;
timer->sys += stop_time->sys - start_time->sys;
/* Initialize timing variables. */
void
-timevar_init ()
+timevar_init (void)
{
timevar_enable = true;
/* Zero all elapsed times. */
- memset ((void *) timevars, 0, sizeof (timevars));
+ memset (timevars, 0, sizeof (timevars));
/* Initialize the names of timing variables. */
#define DEFTIMEVAR(identifier__, name__) \
TIMEVAR cannot be running as a standalone timer. */
void
-timevar_push (timevar)
- timevar_id_t timevar;
+timevar_push_1 (timevar_id_t timevar)
{
struct timevar_def *tv = &timevars[timevar];
struct timevar_stack_def *context;
struct timevar_time_def now;
- if (!timevar_enable)
- return;
-
/* Mark this timing variable as used. */
tv->used = 1;
/* Can't push a standalone timer. */
- if (tv->standalone)
- abort ();
+ gcc_assert (!tv->standalone);
/* What time is it? */
get_time (&now);
unused_stack_instances = unused_stack_instances->next;
}
else
- context = (struct timevar_stack_def *)
- xmalloc (sizeof (struct timevar_stack_def));
+ context = xmalloc (sizeof (struct timevar_stack_def));
/* Fill it in and put it on the stack. */
context->timevar = tv;
timing variable. */
void
-timevar_pop (timevar)
- timevar_id_t timevar;
+timevar_pop_1 (timevar_id_t timevar)
{
struct timevar_time_def now;
struct timevar_stack_def *popped = stack;
- if (!timevar_enable)
- return;
-
- if (&timevars[timevar] != stack->timevar)
- {
- sorry ("cannot timevar_pop '%s' when top of timevars stack is '%s'",
- timevars[timevar].name, stack->timevar->name);
- abort ();
- }
-
+ gcc_assert (&timevars[timevar] == stack->timevar);
+
/* What time is it? */
get_time (&now);
attributed to TIMEVAR. */
void
-timevar_start (timevar)
- timevar_id_t timevar;
+timevar_start (timevar_id_t timevar)
{
struct timevar_def *tv = &timevars[timevar];
/* Don't allow the same timing variable to be started more than
once. */
- if (tv->standalone)
- abort ();
+ gcc_assert (!tv->standalone);
tv->standalone = 1;
get_time (&tv->start_time);
is attributed to it. */
void
-timevar_stop (timevar)
- timevar_id_t timevar;
+timevar_stop (timevar_id_t timevar)
{
struct timevar_def *tv = &timevars[timevar];
struct timevar_time_def now;
return;
/* TIMEVAR must have been started via timevar_start. */
- if (!tv->standalone)
- abort ();
+ gcc_assert (tv->standalone);
get_time (&now);
timevar_accumulate (&tv->elapsed, &tv->start_time, &now);
}
-/* Fill the elapsed time for TIMEVAR into ELAPSED. Returns
- update-to-date information even if TIMEVAR is currently running. */
-
-void
-timevar_get (timevar, elapsed)
- timevar_id_t timevar;
- struct timevar_time_def *elapsed;
-{
- struct timevar_def *tv = &timevars[timevar];
- struct timevar_time_def now;
-
- *elapsed = tv->elapsed;
-
- /* Is TIMEVAR currently running as a standalone timer? */
- if (tv->standalone)
- {
- get_time (&now);
- timevar_accumulate (elapsed, &tv->start_time, &now);
- }
- /* Or is TIMEVAR at the top of the timer stack? */
- else if (stack->timevar == tv)
- {
- get_time (&now);
- timevar_accumulate (elapsed, &start_time, &now);
- }
-}
-
/* Summarize timing variables to FP. The timing variable TV_TOTAL has
a special meaning -- it's considered to be the total elapsed time,
for normalizing the others, and is displayed last. */
void
-timevar_print (fp)
- FILE *fp;
+timevar_print (FILE *fp)
{
/* Only print stuff if we have some sort of time information. */
#if defined (HAVE_USER_TIME) || defined (HAVE_SYS_TIME) || defined (HAVE_WALL_TIME)
fprintf (fp, "%7.2f\n", total->wall);
#endif
+#ifdef ENABLE_CHECKING
+ fprintf (fp, "Extra diagnostic checks enabled; compiler may run slowly.\n");
+ fprintf (fp, "Configure with --disable-checking to disable checks.\n");
+#endif
+
#endif /* defined (HAVE_USER_TIME) || defined (HAVE_SYS_TIME)
|| defined (HAVE_WALL_TIME) */
}
TOTAL (given in microseconds). */
void
-print_time (str, total)
- const char *str;
- long total;
+print_time (const char *str, long total)
{
long all_time = get_run_time ();
fprintf (stderr,