gcc.c (report_times_to_file): New.
* gcc.c (report_times_to_file): New. (execute): Implement it. (process_command): Support -time=. * doc/invoke.texi: Document it. From-SVN: r148162
This commit is contained in:
parent
2ce59df73d
commit
bdde878c07
@ -1,3 +1,10 @@
|
||||
2009-06-04 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* gcc.c (report_times_to_file): New.
|
||||
(execute): Implement it.
|
||||
(process_command): Support -time=.
|
||||
* doc/invoke.texi: Document it.
|
||||
|
||||
2009-06-04 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
|
||||
|
@ -318,7 +318,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-print-multi-directory -print-multi-lib @gol
|
||||
-print-prog-name=@var{program} -print-search-dirs -Q @gol
|
||||
-print-sysroot -print-sysroot-headers-suffix @gol
|
||||
-save-temps -save-temps=cwd -save-temps=obj -time}
|
||||
-save-temps -save-temps=cwd -save-temps=obj -time@r{[}=@var{file}@r{]}}
|
||||
|
||||
@item Optimization Options
|
||||
@xref{Optimize Options,,Options that Control Optimization}.
|
||||
@ -5287,11 +5287,13 @@ would create @file{foo.i}, @file{foo.s}, @file{dir/xbar.i},
|
||||
@file{dir/xbar.s}, @file{dir2/yfoobar.i}, @file{dir2/yfoobar.s}, and
|
||||
@file{dir2/yfoobar.o}.
|
||||
|
||||
@item -time
|
||||
@item -time@r{[}=@var{file}@r{]}
|
||||
@opindex time
|
||||
Report the CPU time taken by each subprocess in the compilation
|
||||
sequence. For C source files, this is the compiler proper and assembler
|
||||
(plus the linker if linking is done). The output looks like this:
|
||||
(plus the linker if linking is done).
|
||||
|
||||
Without the specification of an output file, the output looks like this:
|
||||
|
||||
@smallexample
|
||||
# cc1 0.12 0.01
|
||||
@ -5303,6 +5305,18 @@ executing the program itself. The second number is ``system time'',
|
||||
time spent executing operating system routines on behalf of the program.
|
||||
Both numbers are in seconds.
|
||||
|
||||
With the specification of an output file, the output is appended to the
|
||||
named file, and it looks like this:
|
||||
|
||||
@smallexample
|
||||
0.12 0.01 cc1 @var{options}
|
||||
0.00 0.01 as @var{options}
|
||||
@end smallexample
|
||||
|
||||
The ``user time'' and the ``system time'' are moved before the program
|
||||
name, and the options passed to the program are displayed, so that one
|
||||
can later tell what file was being compiled, and with which options.
|
||||
|
||||
@item -fvar-tracking
|
||||
@opindex fvar-tracking
|
||||
Run variable tracking pass. It computes where variables are stored at each
|
||||
|
57
gcc/gcc.c
57
gcc/gcc.c
@ -198,6 +198,10 @@ static int print_subprocess_help;
|
||||
|
||||
static int report_times;
|
||||
|
||||
/* Whether we should report subprocess execution times to a file. */
|
||||
|
||||
FILE *report_times_to_file = NULL;
|
||||
|
||||
/* Nonzero means place this string before uses of /, so that include
|
||||
and library files can be found in an alternate location. */
|
||||
|
||||
@ -3017,7 +3021,8 @@ execute (void)
|
||||
|
||||
/* Run each piped subprocess. */
|
||||
|
||||
pex = pex_init (PEX_USE_PIPES | (report_times ? PEX_RECORD_TIMES : 0),
|
||||
pex = pex_init (PEX_USE_PIPES | ((report_times || report_times_to_file)
|
||||
? PEX_RECORD_TIMES : 0),
|
||||
programname, temp_filename);
|
||||
if (pex == NULL)
|
||||
pfatal_with_name (_("pex_init failed"));
|
||||
@ -3061,7 +3066,7 @@ execute (void)
|
||||
if (!pex_get_status (pex, n_commands, statuses))
|
||||
pfatal_with_name (_("failed to get exit status"));
|
||||
|
||||
if (report_times)
|
||||
if (report_times || report_times_to_file)
|
||||
{
|
||||
times = (struct pex_time *) alloca (n_commands * sizeof (struct pex_time));
|
||||
if (!pex_get_times (pex, n_commands, times))
|
||||
@ -3106,7 +3111,7 @@ See %s for instructions.",
|
||||
ret_code = -1;
|
||||
}
|
||||
|
||||
if (report_times)
|
||||
if (report_times || report_times_to_file)
|
||||
{
|
||||
struct pex_time *pt = ×[i];
|
||||
double ut, st;
|
||||
@ -3117,7 +3122,43 @@ See %s for instructions.",
|
||||
+ (double) pt->system_microseconds / 1.0e6);
|
||||
|
||||
if (ut + st != 0)
|
||||
notice ("# %s %.2f %.2f\n", commands[i].prog, ut, st);
|
||||
{
|
||||
if (report_times)
|
||||
notice ("# %s %.2f %.2f\n", commands[i].prog, ut, st);
|
||||
|
||||
if (report_times_to_file)
|
||||
{
|
||||
int c = 0;
|
||||
const char *const *j;
|
||||
|
||||
fprintf (report_times_to_file, "%g %g", ut, st);
|
||||
|
||||
for (j = &commands[i].prog; *j; j = &commands[i].argv[++c])
|
||||
{
|
||||
const char *p;
|
||||
for (p = *j; *p; ++p)
|
||||
if (*p == '"' || *p == '\\' || *p == '$'
|
||||
|| ISSPACE (*p))
|
||||
break;
|
||||
|
||||
if (*p)
|
||||
{
|
||||
fprintf (report_times_to_file, " \"");
|
||||
for (p = *j; *p; ++p)
|
||||
{
|
||||
if (*p == '"' || *p == '\\' || *p == '$')
|
||||
fputc ('\\', report_times_to_file);
|
||||
fputc (*p, report_times_to_file);
|
||||
}
|
||||
fputc ('"', report_times_to_file);
|
||||
}
|
||||
else
|
||||
fprintf (report_times_to_file, " %s", *j);
|
||||
}
|
||||
|
||||
fputc ('\n', report_times_to_file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3876,6 +3917,12 @@ process_command (int argc, const char **argv)
|
||||
}
|
||||
else if (strcmp (argv[i], "-time") == 0)
|
||||
report_times = 1;
|
||||
else if (strncmp (argv[i], "-time=", sizeof ("-time=") - 1) == 0)
|
||||
{
|
||||
if (report_times_to_file)
|
||||
fclose (report_times_to_file);
|
||||
report_times_to_file = fopen (argv[i] + sizeof ("-time=") - 1, "a");
|
||||
}
|
||||
else if (strcmp (argv[i], "-pipe") == 0)
|
||||
{
|
||||
/* -pipe has to go into the switches array as well as
|
||||
@ -4288,6 +4335,8 @@ process_command (int argc, const char **argv)
|
||||
;
|
||||
else if (strcmp (argv[i], "-time") == 0)
|
||||
;
|
||||
else if (strncmp (argv[i], "-time=", sizeof ("-time=") - 1) == 0)
|
||||
;
|
||||
else if (strcmp (argv[i], "-###") == 0)
|
||||
;
|
||||
else if (argv[i][0] == '-' && argv[i][1] != 0)
|
||||
|
Loading…
Reference in New Issue
Block a user