final.c (end_final): Use C trees to output data structures for profiling.
* final.c (end_final): Use C trees to output data structures for profiling. * Makefile.in (LIBGCC_DEPS): Added missing dependency on gcov-io.h (profile.o): New dependency profile.h (final.o): New dependency profile.h * profile.h: New file. New global structure profile_info. * final.h (count_edges_instrumented_now): Declare. (current_function_cfg_checksum): Declare. (function_list): New structure. (functions_head, functions_tail): New static variables. (end_final): Emits more data, removed some -ax stuff. (final): Stores function names and chcksums. * gcov-io.h (__write_gcov_string): New function. (__read_gcov_string): New function. * gcov.c (read_profile): New function. (create_program_flow_graph): Uses read_profile instead of reading da_file. (read_files): Removed da_file checking, it's done by read_profile now. * libgcc2.c (bb_function_info): New structure. (bb): New field in structure, removed some -ax stuff. (__bb_exit_func): Changed structure of da_file. * profile.c (count_edges_instrumented_now): New global variable. (current_function_cfg_checksum): New global variable. (max_counter_in_program): New global variable. (get_exec_counts): New function. (compute_checksum): New function. (instrument_edges): Sets count_edges_instrumented_now. (compute_branch_probabilities): Uses get_exec_counts instead of reading da_file. (branch_prob): Calls compute_checksum and writes extra data to bbg_file. (init_branch_prob): Removed da_file checking, done in get_exec_counts now. (end_branch_prob): Removed da_file checking, done in get_exec_counts now. * gcov.texi: Updated information about gcov file format. From-SVN: r53330
This commit is contained in:
parent
02263a8a37
commit
52015d87ea
52
gcc/profile.h
Normal file
52
gcc/profile.h
Normal file
@ -0,0 +1,52 @@
|
||||
/* profile.h - Defines data exported from profile.c to other passes.
|
||||
Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC 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.
|
||||
|
||||
GCC 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 GCC; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
|
||||
#ifndef GCC_PROFILE_H
|
||||
#define GCC_PROFILE_H
|
||||
|
||||
struct
|
||||
{
|
||||
/* Used by final, for allocating the proper amount of storage for the
|
||||
instrumented arc execution counts. */
|
||||
|
||||
int count_instrumented_edges;
|
||||
|
||||
/* Used by final, for writing correct # of instrumented edges
|
||||
in this function. */
|
||||
|
||||
int count_edges_instrumented_now;
|
||||
|
||||
/* Checksum of the cfg. Used for 'identification' of code.
|
||||
Used by final. */
|
||||
|
||||
long current_function_cfg_checksum;
|
||||
|
||||
/* Max. value of counter in program corresponding to the profile data
|
||||
for the current function. */
|
||||
|
||||
gcov_type max_counter_in_program;
|
||||
|
||||
/* The number of profiles merged to form the profile data for the current
|
||||
function. */
|
||||
int count_profiles_merged;
|
||||
|
||||
} profile_info;
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user