summaryrefslogtreecommitdiff
path: root/gcc/profile.h
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2002-05-09 15:07:00 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2002-05-09 15:07:00 +0000
commit880fd2c00350b5baf5c160b2dddcaf3117d8481b (patch)
tree7c77715f5a3ebfa3cd816b259737311df8df7024 /gcc/profile.h
parent8c8ab57ecb3a9a1fbd4b8fb96c1cefab3357cc5a (diff)
downloadgcc-880fd2c00350b5baf5c160b2dddcaf3117d8481b.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53330 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/profile.h')
-rw-r--r--gcc/profile.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/gcc/profile.h b/gcc/profile.h
new file mode 100644
index 00000000000..a6bc7ee984f
--- /dev/null
+++ b/gcc/profile.h
@@ -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