Commit 2a9a326b by Alex Samuel Committed by Alex Samuel

Makefile.in (OBJS): Add timevar.o.

hangeLog:

	* Makefile.in (OBJS): Add timevar.o.
	(toplev.o): Depend on timevar.h.
	(ggc-simple.o): Likewise.
	(ggc-page.o): Likewise.
	(timevar.o): New rule.
	(timevar.h): New rule.

	* timevar.h: New file.
	* timevar.c: Likewise.
	* timevar.def: Likewise.

	* toplev.h (gc_time, parse_time, varconst_time): Remove.
	* toplev.c: Use timevar_push and timevar_pop instead of TIMEVAR
	throughout.
	(TIMEVAR): Remove macro.
	(gc_time, parse_time, varconst_time, integration_time, jump_time,
	cse_time, gcse_time, loop_time, cse2_time, branch_prob_time,
	flow_time, combine_time, regmove_time, sched_time,
	local_alloc_time, global_alloc_time, flow2_time, peephole2_time,
	sched2_time, dbr_sched_time, reorder_blocks_time,
	rename_registers_time, shorten_branch_time, stack_reg_time,
	to_ssa_time, from_ssa_time, final_time, symout_time, dump_time,
	all_time): Remove.
	(compile_file): Don't initialize time variables.  Call
	init_timevar and start TV_TOTAL timer.  Call timevar_print instead
	of many calls to print_time.
	(rest_of_compilation): Add timing for reload_cse_regs.
	(get_run_time): Removed to timevar.c.
	(print_time): Likewise.
	(get_run_time): Implement using TV_TOTAL time variable.
	(print_time): Get total run time from get_run_time.
	* ggc-page.c (ggc_collect): Push and pop TV_GC instead of
	computing elapsed time explicitly.
	* ggc-simple.c (ggc_collect): Likewise.
	(gc_time): Remove declaration.


cp/ChangeLog:

	* lex.c (my_get_run_time): Remove.
	(init_filename_times): Use get_run_time instead of my_get_run_time.
	(check_newline): Likewise.
	(dump_time_statistics): Likewise.
	* decl2.c (finish_file): Push and pop timevar TV_VARCONST instead
	of computing elapsed time explicitly.

From-SVN: r33496
parent e815887f
2000-04-27 Alex Samuel <samuel@codesourcery.com>
* Makefile.in (OBJS): Add timevar.o.
(toplev.o): Depend on timevar.h.
(ggc-simple.o): Likewise.
(ggc-page.o): Likewise.
(timevar.o): New rule.
(timevar.h): New rule.
* timevar.h: New file.
* timevar.c: Likewise.
* timevar.def: Likewise.
* toplev.h (gc_time, parse_time, varconst_time): Remove.
* toplev.c: Use timevar_push and timevar_pop instead of TIMEVAR
throughout.
(TIMEVAR): Remove macro.
(gc_time, parse_time, varconst_time, integration_time, jump_time,
cse_time, gcse_time, loop_time, cse2_time, branch_prob_time,
flow_time, combine_time, regmove_time, sched_time,
local_alloc_time, global_alloc_time, flow2_time, peephole2_time,
sched2_time, dbr_sched_time, reorder_blocks_time,
rename_registers_time, shorten_branch_time, stack_reg_time,
to_ssa_time, from_ssa_time, final_time, symout_time, dump_time,
all_time): Remove.
(compile_file): Don't initialize time variables. Call
init_timevar and start TV_TOTAL timer. Call timevar_print instead
of many calls to print_time.
(rest_of_compilation): Add timing for reload_cse_regs.
(get_run_time): Removed to timevar.c.
(print_time): Likewise.
(get_run_time): Implement using TV_TOTAL time variable.
(print_time): Get total run time from get_run_time.
* ggc-page.c (ggc_collect): Push and pop TV_GC instead of
computing elapsed time explicitly.
* ggc-simple.c (ggc_collect): Likewise.
(gc_time): Remove declaration.
2000-04-27 Mark Mitchell <mark@codesourcery.com>
* calls.c (combine_pending_stack_adjustment_and_call): New function.
......
......@@ -684,7 +684,7 @@ OBJS = diagnostic.o \
profile.o insn-attrtab.o $(out_object_file) $(EXTRA_OBJS) convert.o \
mbchar.o dyn-string.o splay-tree.o graph.o sbitmap.o resource.o hash.o \
predict.o lists.o ggc-common.o $(GGC) simplify-rtx.o ssa.o bb-reorder.o \
sibcall.o conflict.o
sibcall.o conflict.o timevar.o
# GEN files are listed separately, so they can be built before doing parallel
# makes for cc1 or cc1plus. Otherwise sequent parallel make attempts to load
......@@ -1470,10 +1470,10 @@ ggc-common.o: ggc-common.c $(CONFIG_H) $(RTL_H) $(TREE_H) \
flags.h $(GGC_H) varray.h hash.h
ggc-simple.o: ggc-simple.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h \
$(GGC_H) varray.h
$(GGC_H) varray.h timevar.h
ggc-page.o: ggc-page.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h toplev.h \
$(GGC_H) varray.h
$(GGC_H) varray.h timevar.h
ggc-none.o: ggc-none.c $(CONFIG_H) $(RTL_H) $(GGC_H)
......@@ -1505,7 +1505,7 @@ toplev.o : toplev.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) function.h \
flags.h input.h insn-attr.h xcoffout.h defaults.h output.h \
insn-codes.h insn-config.h intl.h $(RECOG_H) Makefile toplev.h dwarfout.h \
dwarf2out.h sdbout.h dbxout.h $(EXPR_H) $(BASIC_BLOCK_H) graph.h loop.h \
except.h regs.h $(lang_options_files)
except.h regs.h timevar.h $(lang_options_files)
$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(MAYBE_USE_COLLECT2) \
-DTARGET_NAME=\"$(target_alias)\" \
-c `echo $(srcdir)/toplev.c | sed 's,^\./,,'`
......@@ -1658,6 +1658,8 @@ lists.o: lists.c $(CONFIG_H) system.h toplev.h $(RTL_H) $(GGC_H)
bb-reorder.o : bb-reorder.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h \
$(RECOG_H) insn-flags.h function.h except.h $(EXPR_H)
timevar.o : timevar.c $(CONFIG_H) system.h timevar.h timevar.def
timevar.h : timevar.def
regrename.o : regrename.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h \
......
2000-04-27 Alex Samuel <samuel@codesourcery.com>
* lex.c (my_get_run_time): Remove.
(init_filename_times): Use get_run_time instead of my_get_run_time.
(check_newline): Likewise.
(dump_time_statistics): Likewise.
* decl2.c (finish_file): Push and pop timevar TV_VARCONST instead
of computing elapsed time explicitly.
2000-04-26 Mark Mitchell <mark@codesourcery.com>
* cp-tree.h (TREE_READONLY_DECL_P): Use DECL_P.
......
......@@ -44,6 +44,7 @@ Boston, MA 02111-1307, USA. */
#include "dwarf2out.h"
#include "dwarfout.h"
#include "ggc.h"
#include "timevar.h"
#if USE_CPPLIB
#include "cpplib.h"
......@@ -3429,7 +3430,6 @@ generate_ctor_and_dtor_functions_for_priority (n, data)
void
finish_file ()
{
long start_time, this_time;
tree vars;
int reconsider;
size_t i;
......@@ -3463,7 +3463,7 @@ finish_file ()
generating the intiailzer for an object may cause templates to be
instantiated, etc., etc. */
start_time = get_run_time ();
timevar_push (TV_VARCONST);
if (new_abi_rtti_p ())
emit_support_tinfos ();
......@@ -3686,9 +3686,7 @@ finish_file ()
if (back_end_hook)
(*back_end_hook) (global_namespace);
this_time = get_run_time ();
parse_time -= this_time - start_time;
varconst_time += this_time - start_time;
timevar_pop (TV_VARCONST);
if (flag_detailed_statistics)
{
......
......@@ -40,6 +40,7 @@ Boston, MA 02111-1307, USA. */
#include "output.h"
#include "ggc.h"
#include "tm_p.h"
#include "timevar.h"
#ifdef MULTIBYTE_CHARS
#include "mbchar.h"
......@@ -56,7 +57,6 @@ static int check_newline PARAMS ((void));
static int whitespace_cr PARAMS ((int));
static int skip_white_space PARAMS ((int));
static void finish_defarg PARAMS ((void));
static int my_get_run_time PARAMS ((void));
static int interface_strcmp PARAMS ((const char *));
static int readescape PARAMS ((int *));
static char *extend_token_buffer PARAMS ((const char *));
......@@ -389,17 +389,6 @@ get_time_identifier (name)
return time_identifier;
}
static inline int
my_get_run_time ()
{
int old_quiet_flag = quiet_flag;
int this_time;
quiet_flag = 0;
this_time = get_run_time ();
quiet_flag = old_quiet_flag;
return this_time;
}
/* Table indexed by tree code giving a string containing a character
classifying the tree code. Possibilities are
t, d, s, c, r, <, 1 and 2. See cp/cp-tree.def for details. */
......@@ -488,7 +477,7 @@ init_filename_times ()
if (flag_detailed_statistics)
{
header_time = 0;
body_time = my_get_run_time ();
body_time = get_run_time ();
TREE_INT_CST_LOW (TIME_IDENTIFIER_TIME (this_filename_time))
= body_time;
}
......@@ -2390,7 +2379,7 @@ linenum:
is charged against header time, and body time starts back at 0. */
if (flag_detailed_statistics)
{
int this_time = my_get_run_time ();
int this_time = get_run_time ();
tree time_identifier = get_time_identifier (TREE_STRING_POINTER (yylval.ttype));
header_time += this_time - body_time;
TREE_INT_CST_LOW (TIME_IDENTIFIER_TIME (this_filename_time))
......@@ -5086,7 +5075,7 @@ void
dump_time_statistics ()
{
register tree prev = 0, decl, next;
int this_time = my_get_run_time ();
int this_time = get_run_time ();
TREE_INT_CST_LOW (TIME_IDENTIFIER_TIME (this_filename_time))
+= this_time - body_time;
......
......@@ -27,6 +27,7 @@ Boston, MA 02111-1307, USA. */
#include "varray.h"
#include "flags.h"
#include "ggc.h"
#include "timevar.h"
#ifdef HAVE_MMAP_ANYWHERE
#include <sys/mman.h>
......@@ -1101,8 +1102,6 @@ poison_pages ()
void
ggc_collect ()
{
long time;
/* Avoid frequent unnecessary work by skipping collection if the
total allocations haven't expanded much since the last
collection. */
......@@ -1111,7 +1110,7 @@ ggc_collect ()
return;
#endif
time = get_run_time ();
timevar_push (TV_GC);
if (!quiet_flag)
fprintf (stderr, " {GC %luk -> ", (unsigned long) G.allocated / 1024);
......@@ -1136,14 +1135,10 @@ ggc_collect ()
if (G.allocated_last_gc < GGC_MIN_LAST_ALLOCATED)
G.allocated_last_gc = GGC_MIN_LAST_ALLOCATED;
time = get_run_time () - time;
gc_time += time;
timevar_pop (TV_GC);
if (!quiet_flag)
{
fprintf (stderr, "%luk in %.3f}",
(unsigned long) G.allocated / 1024, time * 1e-6);
}
fprintf (stderr, "%luk}", (unsigned long) G.allocated / 1024);
}
/* Print allocation statistics. */
......
......@@ -26,6 +26,7 @@
#include "flags.h"
#include "varray.h"
#include "ggc.h"
#include "timevar.h"
#ifndef offsetof
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
......@@ -58,7 +59,6 @@
/* Constants for general use. */
char *empty_string;
extern int gc_time;
#ifndef HOST_BITS_PER_PTR
#define HOST_BITS_PER_PTR HOST_BITS_PER_LONG
......@@ -339,8 +339,6 @@ sweep_objs (root)
void
ggc_collect ()
{
int time;
#ifndef GGC_ALWAYS_COLLECT
if (G.allocated < GGC_MIN_EXPAND_FOR_GC * G.allocated_last_gc)
return;
......@@ -350,7 +348,7 @@ ggc_collect ()
debug_ggc_balance ();
#endif
time = get_run_time ();
timevar_push (TV_GC);
if (!quiet_flag)
fprintf (stderr, " {GC %luk -> ", (unsigned long)G.allocated / 1024);
......@@ -365,14 +363,10 @@ ggc_collect ()
if (G.allocated_last_gc < GGC_MIN_LAST_ALLOCATED)
G.allocated_last_gc = GGC_MIN_LAST_ALLOCATED;
time = get_run_time () - time;
gc_time += time;
timevar_pop (TV_GC);
if (!quiet_flag)
{
fprintf (stderr, "%luk in %.3f}",
(unsigned long) G.allocated / 1024, time * 1e-6);
}
fprintf (stderr, "%luk}", (unsigned long) G.allocated / 1024);
#ifdef GGC_BALANCE
debug_ggc_balance ();
......
This diff is collapsed. Click to expand it.
/* This file contains the definitions for timing variables used to
measure run-time performance of the compiler.
Copyright (C) 2000 Free Software Foundation, Inc.
Contributed by Alex Samuel <samuel@codesourcery.com>
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* This file contains timing variable definitions, used by timevar.h
and timevar.c.
Syntax:
DEFTIMEVAR (id, name)
where ID is the enumeral value used to identify the timing
variable, and NAME is a character string describing its purpose. */
/* The total execution time. */
DEFTIMEVAR (TV_TOTAL , "total time")
/* Time spent garbage-collecting. */
DEFTIMEVAR (TV_GC , "garbage collection")
/* Time spent generating dump files. */
DEFTIMEVAR (TV_DUMP , "dump files")
/* Timing in various stages of the compiler. */
DEFTIMEVAR (TV_PARSE , "parser")
DEFTIMEVAR (TV_VARCONST , "varconst")
DEFTIMEVAR (TV_INTEGRATION , "integration")
DEFTIMEVAR (TV_JUMP , "jump")
DEFTIMEVAR (TV_CSE , "CSE")
DEFTIMEVAR (TV_GCSE , "global CSE")
DEFTIMEVAR (TV_LOOP , "loop analysis")
DEFTIMEVAR (TV_CSE2 , "CSE 2")
DEFTIMEVAR (TV_BRANCH_PROB , "branch prediction")
DEFTIMEVAR (TV_FLOW , "flow analysis")
DEFTIMEVAR (TV_COMBINE , "combiner")
DEFTIMEVAR (TV_REGMOVE , "regmove")
DEFTIMEVAR (TV_SCHED , "scheduling")
DEFTIMEVAR (TV_LOCAL_ALLOC , "local alloc")
DEFTIMEVAR (TV_GLOBAL_ALLOC , "global alloc")
DEFTIMEVAR (TV_RELOAD_CSE_REGS , "reload CSE regs")
DEFTIMEVAR (TV_FLOW2 , "flow 2")
DEFTIMEVAR (TV_PEEPHOLE2 , "peephole 2")
DEFTIMEVAR (TV_SCHED2 , "schedulding 2")
DEFTIMEVAR (TV_DBR_SCHED , "delay branch sched")
DEFTIMEVAR (TV_REORDER_BLOCKS , "reorder blocks")
DEFTIMEVAR (TV_RENAME_REGISTERS , "rename registers")
DEFTIMEVAR (TV_SHORTEN_BRANCH , "shorten branches")
DEFTIMEVAR (TV_REG_STACK , "reg stack")
DEFTIMEVAR (TV_TO_SSA , "convert to SSA")
DEFTIMEVAR (TV_FROM_SSA , "convert from SSA")
DEFTIMEVAR (TV_FINAL , "final")
DEFTIMEVAR (TV_SYMOUT , "symout")
/* Everything else in rest_of_compilation not included above. */
DEFTIMEVAR (TV_REST_OF_COMPILATION , "rest of compilation")
/* Timing variables for measuring compiler performance.
Copyright (C) 2000 Free Software Foundation, Inc.
Contributed by Alex Samuel <samuel@codesourcery.com>
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Timing variables are used to measure elapsed time in various
portions of the compiler. Each measures elapsed user, system, and
wall-clock time, as appropriate to and supported by the host
system.
Timing variables are defined using the DEFTIMEVAR macro in
timevar.def. Each has an enumeral identifier, used when referring
to the timing variable in code, and a character string name.
Timing variables can be used in two ways:
- On the timing stack, using timevar_push and timevar_pop.
Timing variables may be pushed onto the stack; elapsed time is
attributed to the topmost timing variable on the stack. When
another variable is pushed on, the previous topmost variable is
`paused' until the pushed variable is popped back off.
- As a standalone timer, using timevar_start and timevar_stop.
All time elapsed between the two calls is attributed to the
variable.
*/
/* This structure stores the various varieties of time that can be
measured. Times are stored in microseconds. The time may be an
absolute time or a time difference; in the former case, the time
base is undefined, except that the difference between two times
produces a valid time difference. */
struct timevar_time_def
{
/* User time in this process. */
long user;
/* System time (if applicable for this host platform) in this
process. */
long sys;
/* Wall clock time. */
long wall;
};
/* An enumeration of timing variable indentifiers. Constructed from
the contents of timevar.def. */
#define DEFTIMEVAR(identifier__, name__) \
identifier__,
typedef enum
{
#include "timevar.def"
TIMEVAR_LAST
}
timevar_id_t;
#undef DEFTIMEVAR
extern void init_timevar PARAMS ((void));
extern void timevar_push PARAMS ((timevar_id_t));
extern void timevar_pop PARAMS ((timevar_id_t));
extern void timevar_start PARAMS ((timevar_id_t));
extern void timevar_stop PARAMS ((timevar_id_t));
extern void timevar_get PARAMS ((timevar_id_t, struct timevar_time_def *));
extern void timevar_print PARAMS ((FILE *));
/* Provided for backward compatibility. */
extern long get_run_time PARAMS ((void));
extern void print_time PARAMS ((const char *, long));
......@@ -26,10 +26,6 @@ union tree_node;
struct rtx_def;
#endif
extern long gc_time;
extern long parse_time;
extern long varconst_time;
extern int read_integral_parameter PARAMS ((const char *, const char *,
const int));
extern int count_error PARAMS ((int));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment