system.h (GCOV_SIZE_TYPE): Unposion.
authorRichard Sandiford <rsandifo@redhat.com>
Mon, 4 Apr 2005 19:41:14 +0000 (19:41 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 4 Apr 2005 19:41:14 +0000 (19:41 +0000)
* system.h (GCOV_SIZE_TYPE): Unposion.
* gcov-io.h (GCOV_TYPE_NODE): Delete, replacing with...
(GCOV_TYPE_SIZE): ...this new macro.
* coverage.h (get_gcov_type, GCOV_TYPE_NODE): Declare.
* coverage.c (get_gcov_type, get_gcov_unsigned_t): New functions.
(rtl_coverage_counter_ref): Use GCOV_TYPE_SIZE.
(build_fn_info_type, build_fn_info_value, build_ctr_info_type)
(build_ctr_info_value, build_gcov_info): Use get_gcov_unsigned_t
instead of unsigned_intSI_type_node.
* rtl-profile.c (rtl_gen_interval_profiler, rtl_gen_pow2_profiler)
(rtl_gen_one_value_profiler_no_edge_manipulation)
(rtl_gen_const_delta_profiler): Use GCOV_TYPE_SIZE.
* value-prof.c: Include coverage.h.

From-SVN: r97570

gcc/ChangeLog
gcc/coverage.c
gcc/coverage.h
gcc/gcov-io.h
gcc/rtl-profile.c
gcc/system.h
gcc/value-prof.c

index 5c4716f..20e9b39 100644 (file)
@@ -1,3 +1,19 @@
+2004-04-04  Richard Sandiford  <rsandifo@redhat.com>
+
+       * system.h (GCOV_SIZE_TYPE): Unposion.
+       * gcov-io.h (GCOV_TYPE_NODE): Delete, replacing with...
+       (GCOV_TYPE_SIZE): ...this new macro.
+       * coverage.h (get_gcov_type, GCOV_TYPE_NODE): Declare.
+       * coverage.c (get_gcov_type, get_gcov_unsigned_t): New functions.
+       (rtl_coverage_counter_ref): Use GCOV_TYPE_SIZE.
+       (build_fn_info_type, build_fn_info_value, build_ctr_info_type)
+       (build_ctr_info_value, build_gcov_info): Use get_gcov_unsigned_t
+       instead of unsigned_intSI_type_node.
+       * rtl-profile.c (rtl_gen_interval_profiler, rtl_gen_pow2_profiler)
+       (rtl_gen_one_value_profiler_no_edge_manipulation)
+       (rtl_gen_const_delta_profiler): Use GCOV_TYPE_SIZE.
+       * value-prof.c: Include coverage.h.
+
 2005-04-02  Daniel Berlin  <dberlin@dberlin.org>
            Diego Novillo <dnovillo@redhat.com>
            
index a4f4d00..a5a8f19 100644 (file)
@@ -120,7 +120,22 @@ static tree build_ctr_info_type (void);
 static tree build_ctr_info_value (unsigned, tree);
 static tree build_gcov_info (void);
 static void create_coverage (void);
+\f
+/* Return the type node for gcov_type.  */
+
+tree
+get_gcov_type (void)
+{
+  return lang_hooks.types.type_for_size (GCOV_TYPE_SIZE, false);
+}
+
+/* Return the type node for gcov_unsigned_t.  */
 
+static tree
+get_gcov_unsigned_t (void)
+{
+  return lang_hooks.types.type_for_size (32, true);
+}
 \f
 static hashval_t
 htab_counts_entry_hash (const void *of)
@@ -399,8 +414,7 @@ coverage_counter_alloc (unsigned counter, unsigned num)
 rtx
 rtl_coverage_counter_ref (unsigned counter, unsigned no)
 {
-  unsigned gcov_size = tree_low_cst (TYPE_SIZE (GCOV_TYPE_NODE), 1);
-  enum machine_mode mode = mode_for_size (gcov_size, MODE_INT, 0);
+  enum machine_mode mode = mode_for_size (GCOV_TYPE_SIZE, MODE_INT, 0);
   rtx ref;
 
   gcc_assert (no < fn_n_ctrs[counter] - fn_b_ctrs[counter]);
@@ -412,7 +426,8 @@ rtl_coverage_counter_ref (unsigned counter, unsigned no)
                               (tree_ctr_tables[counter]))));
         SYMBOL_REF_FLAGS (ctr_labels[counter]) = SYMBOL_FLAG_LOCAL;
       }
-  ref = plus_constant (ctr_labels[counter], gcov_size / BITS_PER_UNIT * no);
+  ref = plus_constant (ctr_labels[counter],
+                      GCOV_TYPE_SIZE / BITS_PER_UNIT * no);
   ref = gen_rtx_MEM (mode, ref);
   set_mem_alias_set (ref, new_alias_set ());
   MEM_NOTRAP_P (ref) = 1;
@@ -602,10 +617,10 @@ build_fn_info_type (unsigned int counters)
   tree array_type;
 
   /* ident */
-  fields = build_decl (FIELD_DECL, NULL_TREE, unsigned_intSI_type_node);
+  fields = build_decl (FIELD_DECL, NULL_TREE, get_gcov_unsigned_t ());
 
   /* checksum */
-  field = build_decl (FIELD_DECL, NULL_TREE, unsigned_intSI_type_node);
+  field = build_decl (FIELD_DECL, NULL_TREE, get_gcov_unsigned_t ());
   TREE_CHAIN (field) = fields;
   fields = field;
 
@@ -636,12 +651,12 @@ build_fn_info_value (const struct function_list *function, tree type)
   tree array_value = NULL_TREE;
 
   /* ident */
-  value = tree_cons (fields, build_int_cstu (unsigned_intSI_type_node,
+  value = tree_cons (fields, build_int_cstu (get_gcov_unsigned_t (),
                                             function->ident), value);
   fields = TREE_CHAIN (fields);
 
   /* checksum */
-  value = tree_cons (fields, build_int_cstu (unsigned_intSI_type_node,
+  value = tree_cons (fields, build_int_cstu (get_gcov_unsigned_t (),
                                             function->checksum), value);
   fields = TREE_CHAIN (fields);
 
@@ -674,7 +689,7 @@ build_ctr_info_type (void)
   tree gcov_merge_fn_type;
 
   /* counters */
-  field = build_decl (FIELD_DECL, NULL_TREE, unsigned_intSI_type_node);
+  field = build_decl (FIELD_DECL, NULL_TREE, get_gcov_unsigned_t ());
   TREE_CHAIN (field) = fields;
   fields = field;
 
@@ -711,7 +726,7 @@ build_ctr_info_value (unsigned int counter, tree type)
 
   /* counters */
   value = tree_cons (fields,
-                    build_int_cstu (unsigned_intSI_type_node,
+                    build_int_cstu (get_gcov_unsigned_t (),
                                     prg_n_ctrs[counter]),
                     value);
   fields = TREE_CHAIN (fields);
@@ -785,11 +800,11 @@ build_gcov_info (void)
   const_type = build_qualified_type (type, TYPE_QUAL_CONST);
 
   /* Version ident */
-  field = build_decl (FIELD_DECL, NULL_TREE, unsigned_intSI_type_node);
+  field = build_decl (FIELD_DECL, NULL_TREE, get_gcov_unsigned_t ());
   TREE_CHAIN (field) = fields;
   fields = field;
-  value = tree_cons (field, build_int_cstu (unsigned_intSI_type_node,
-                                           GCOV_VERSION), value);
+  value = tree_cons (field, build_int_cstu (TREE_TYPE (field), GCOV_VERSION),
+                    value);
 
   /* next -- NULL */
   field = build_decl (FIELD_DECL, NULL_TREE, build_pointer_type (const_type));
@@ -798,11 +813,11 @@ build_gcov_info (void)
   value = tree_cons (field, null_pointer_node, value);
 
   /* stamp */
-  field = build_decl (FIELD_DECL, NULL_TREE, unsigned_intSI_type_node);
+  field = build_decl (FIELD_DECL, NULL_TREE, get_gcov_unsigned_t ());
   TREE_CHAIN (field) = fields;
   fields = field;
-  value = tree_cons (field, build_int_cstu (unsigned_intSI_type_node,
-                                           local_tick), value);
+  value = tree_cons (field, build_int_cstu (TREE_TYPE (field), local_tick),
+                    value);
 
   /* Filename */
   string_type = build_pointer_type (build_qualified_type (char_type_node,
index 033d3fd..d004e23 100644 (file)
@@ -47,4 +47,8 @@ extern gcov_type *get_coverage_counts (unsigned /*counter*/,
                                       unsigned /*expected*/,
                                       const struct gcov_ctr_summary **);
 
+extern tree get_gcov_type (void);
+
+#define GCOV_TYPE_NODE get_gcov_type ()
+
 #endif
index 904f541..d0bacff 100644 (file)
@@ -214,11 +214,7 @@ typedef HOST_WIDEST_INT gcov_type;
 #include <sys/types.h>
 #endif
 #else /*!IN_GCOV */
-#if LONG_LONG_TYPE_SIZE > 32
-#define GCOV_TYPE_NODE intDI_type_node
-#else
-#define GCOV_TYPE_NODE intSI_type_node
-#endif
+#define GCOV_TYPE_SIZE (LONG_LONG_TYPE_SIZE > 32 ? 64 : 32)
 #endif
 
 #if defined (HOST_HAS_F_SETLKW)
index d07d564..614525d 100644 (file)
@@ -83,14 +83,13 @@ rtl_gen_edge_profiler (int edgeno, edge e)
 static void
 rtl_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base)
 {
-  unsigned gcov_size = tree_low_cst (TYPE_SIZE (GCOV_TYPE_NODE), 1);
-  enum machine_mode mode = mode_for_size (gcov_size, MODE_INT, 0);
+  enum machine_mode mode = mode_for_size (GCOV_TYPE_SIZE, MODE_INT, 0);
   rtx mem_ref, tmp, tmp1, mr, val;
   rtx sequence;
   rtx more_label = gen_label_rtx ();
   rtx less_label = gen_label_rtx ();
   rtx end_of_code_label = gen_label_rtx ();
-  int per_counter = gcov_size / BITS_PER_UNIT;
+  int per_counter = GCOV_TYPE_SIZE / BITS_PER_UNIT;
   edge e = split_block (BLOCK_FOR_INSN (value->hvalue.rtl.insn),
                   PREV_INSN (value->hvalue.rtl.insn));
 
@@ -169,13 +168,12 @@ rtl_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base)
 static void
 rtl_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base)
 {
-  unsigned gcov_size = tree_low_cst (TYPE_SIZE (GCOV_TYPE_NODE), 1);
-  enum machine_mode mode = mode_for_size (gcov_size, MODE_INT, 0);
+  enum machine_mode mode = mode_for_size (GCOV_TYPE_SIZE, MODE_INT, 0);
   rtx mem_ref, tmp, mr, uval;
   rtx sequence;
   rtx end_of_code_label = gen_label_rtx ();
   rtx loop_label = gen_label_rtx ();
-  int per_counter = gcov_size / BITS_PER_UNIT;
+  int per_counter = GCOV_TYPE_SIZE / BITS_PER_UNIT;
   edge e = split_block (BLOCK_FOR_INSN (value->hvalue.rtl.insn),
                   PREV_INSN (value->hvalue.rtl.insn));
 
@@ -245,8 +243,7 @@ static rtx
 rtl_gen_one_value_profiler_no_edge_manipulation (histogram_value value,
                                                 unsigned tag, unsigned base)
 {
-  unsigned gcov_size = tree_low_cst (TYPE_SIZE (GCOV_TYPE_NODE), 1);
-  enum machine_mode mode = mode_for_size (gcov_size, MODE_INT, 0);
+  enum machine_mode mode = mode_for_size (GCOV_TYPE_SIZE, MODE_INT, 0);
   rtx stored_value_ref, counter_ref, all_ref, stored_value, counter, all;
   rtx tmp, uval;
   rtx sequence;
@@ -340,8 +337,7 @@ static void
 rtl_gen_const_delta_profiler (histogram_value value, unsigned tag, unsigned base)
 {
   histogram_value one_value_delta;
-  unsigned gcov_size = tree_low_cst (TYPE_SIZE (GCOV_TYPE_NODE), 1);
-  enum machine_mode mode = mode_for_size (gcov_size, MODE_INT, 0);
+  enum machine_mode mode = mode_for_size (GCOV_TYPE_SIZE, MODE_INT, 0);
   rtx stored_value_ref, stored_value, tmp, uval;
   rtx sequence;
   edge e = split_block (BLOCK_FOR_INSN (value->hvalue.rtl.insn),
index f285e87..d1b9d2e 100644 (file)
@@ -646,8 +646,7 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
        PROMOTED_MODE EXPAND_BUILTIN_VA_END                                \
        LINKER_DOES_NOT_WORK_WITH_DWARF2 FUNCTION_ARG_KEEP_AS_REFERENCE    \
        GIV_SORT_CRITERION MAX_LONG_TYPE_SIZE MAX_LONG_DOUBLE_TYPE_SIZE    \
-       MAX_WCHAR_TYPE_SIZE GCOV_TYPE_SIZE SHARED_SECTION_ASM_OP           \
-       INTEGRATE_THRESHOLD                                                \
+       MAX_WCHAR_TYPE_SIZE SHARED_SECTION_ASM_OPINTEGRATE_THRESHOLD       \
        FINAL_REG_PARM_STACK_SPACE MAYBE_REG_PARM_STACK_SPACE              \
        TRADITIONAL_PIPELINE_INTERFACE DFA_PIPELINE_INTERFACE              \
        DBX_OUTPUT_STANDARD_TYPES BUILTIN_SETJMP_FRAME_VALUE               \
index 4712b52..0ef054e 100644 (file)
@@ -37,6 +37,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "tree-flow.h"
 #include "tree-flow-inline.h"
 #include "diagnostic.h"
+#include "coverage.h"
 #include "tree.h"
 #include "gcov-io.h"