Mercurial > hg > CbC > CbC_gcc
annotate gcc/timevar.h @ 66:b362627d71ba
bug-fix: modify tail-call-optimization enforcing rules. (calls.c.)
author | Ryoma SHINYA <shinya@firefly.cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 14 Dec 2010 03:58:33 +0900 |
parents | 77e2b8dfacca |
children | b7f97abdc517 |
rev | line source |
---|---|
0 | 1 /* Timing variables for measuring compiler performance. |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
2 Copyright (C) 2000, 2003, 2004, 2005, 2007, 2009 |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
3 Free Software Foundation, Inc. |
0 | 4 Contributed by Alex Samuel <samuel@codesourcery.com> |
5 | |
6 This file is part of GCC. | |
7 | |
8 GCC is free software; you can redistribute it and/or modify it | |
9 under the terms of the GNU General Public License as published by | |
10 the Free Software Foundation; either version 3, or (at your option) | |
11 any later version. | |
12 | |
13 GCC is distributed in the hope that it will be useful, but WITHOUT | |
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public | |
16 License for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
19 along with GCC; see the file COPYING3. If not see | |
20 <http://www.gnu.org/licenses/>. */ | |
21 | |
22 #ifndef GCC_TIMEVAR_H | |
23 #define GCC_TIMEVAR_H | |
24 | |
25 /* Timing variables are used to measure elapsed time in various | |
26 portions of the compiler. Each measures elapsed user, system, and | |
27 wall-clock time, as appropriate to and supported by the host | |
28 system. | |
29 | |
30 Timing variables are defined using the DEFTIMEVAR macro in | |
31 timevar.def. Each has an enumeral identifier, used when referring | |
32 to the timing variable in code, and a character string name. | |
33 | |
34 Timing variables can be used in two ways: | |
35 | |
36 - On the timing stack, using timevar_push and timevar_pop. | |
37 Timing variables may be pushed onto the stack; elapsed time is | |
38 attributed to the topmost timing variable on the stack. When | |
39 another variable is pushed on, the previous topmost variable is | |
40 `paused' until the pushed variable is popped back off. | |
41 | |
42 - As a standalone timer, using timevar_start and timevar_stop. | |
43 All time elapsed between the two calls is attributed to the | |
44 variable. | |
45 */ | |
46 | |
47 /* This structure stores the various varieties of time that can be | |
48 measured. Times are stored in seconds. The time may be an | |
49 absolute time or a time difference; in the former case, the time | |
50 base is undefined, except that the difference between two times | |
51 produces a valid time difference. */ | |
52 | |
53 struct timevar_time_def | |
54 { | |
55 /* User time in this process. */ | |
56 double user; | |
57 | |
58 /* System time (if applicable for this host platform) in this | |
59 process. */ | |
60 double sys; | |
61 | |
62 /* Wall clock time. */ | |
63 double wall; | |
64 | |
65 /* Garbage collector memory. */ | |
66 unsigned ggc_mem; | |
67 }; | |
68 | |
69 /* An enumeration of timing variable identifiers. Constructed from | |
70 the contents of timevar.def. */ | |
71 | |
72 #define DEFTIMEVAR(identifier__, name__) \ | |
73 identifier__, | |
74 typedef enum | |
75 { | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
76 TV_NONE, |
0 | 77 #include "timevar.def" |
78 TIMEVAR_LAST | |
79 } | |
80 timevar_id_t; | |
81 #undef DEFTIMEVAR | |
82 | |
83 /* Execute the sequence: timevar_pop (TV), return (E); */ | |
84 #define POP_TIMEVAR_AND_RETURN(TV, E) do { timevar_pop (TV); return (E); }while(0) | |
85 #define timevar_pop(TV) do { if (timevar_enable) timevar_pop_1 (TV); }while(0) | |
86 #define timevar_push(TV) do { if (timevar_enable) timevar_push_1 (TV); }while(0) | |
87 | |
88 extern void timevar_init (void); | |
89 extern void timevar_push_1 (timevar_id_t); | |
90 extern void timevar_pop_1 (timevar_id_t); | |
91 extern void timevar_start (timevar_id_t); | |
92 extern void timevar_stop (timevar_id_t); | |
93 extern void timevar_print (FILE *); | |
94 | |
95 /* Provided for backward compatibility. */ | |
96 extern void print_time (const char *, long); | |
97 | |
98 extern bool timevar_enable; | |
99 | |
100 extern size_t timevar_ggc_mem_total; | |
101 | |
102 #endif /* ! GCC_TIMEVAR_H */ |