]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ipa-devirt.c (odr_type_warn_count): Add type.
authorJan Hubicka <hubicka@gcc.gnu.org>
Sun, 3 Aug 2014 14:02:19 +0000 (14:02 +0000)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sun, 3 Aug 2014 14:02:19 +0000 (14:02 +0000)
* ipa-devirt.c (odr_type_warn_count): Add type.
(possible_polymorphic_call_targets): Set it.
(ipa_devirt): Use it.

From-SVN: r213526

gcc/ChangeLog
gcc/ipa-devirt.c

index 832c89b168486d6b9a7f48dbdc1657395c216cb2..f193068343e11392acfcf9840c5e5141aafd041a 100644 (file)
@@ -1,3 +1,9 @@
+2014-08-01  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa-devirt.c (odr_type_warn_count): Add type.
+       (possible_polymorphic_call_targets): Set it.
+       (ipa_devirt): Use it.
+
 2014-08-01  Jan Hubicka  <hubicka@ucw.cz>
 
        * doc/invoke.texi (Wsuggest-final-types, Wsuggest-final-methods): Document.
        * hash-map.h (default_hashmap_traits::mark_key_deleted):
        Fix cast.
        (hash_map::remove): New method.
-(hash_map::traverse): New method.
+       (hash_map::traverse): New method.
        * cgraph.h, except.c, except.h, gimple-ssa-strength-reduction.c,
        ipa-utils.c, lto-cgraph.c, lto-streamer.h, omp-low.c, predict.c,
        tree-cfg.c, tree-cfgcleanup.c, tree-eh.c, tree-eh.h, tree-inline.c,
        tree-inline.h, tree-nested.c, tree-sra.c, tree-ssa-loop-im.c,
        tree-ssa-loop-ivopts.c, tree-ssa-reassoc.c, tree-ssa-structalias.c,
        tree-ssa.c, tree-ssa.h, var-tracking.c: Use hash_map instead of
- pointer_map.
      pointer_map.
 
 2014-08-02  Trevor Saunders  <tsaunders@mozilla.com>
 
index ca74d3bb4fdbc1c2aa080d6762d8c38d4717c5e6..56eeaf5c9c2d05aa671754e780cd5e803b6171c4 100644 (file)
@@ -2518,6 +2518,7 @@ devirt_variable_node_removal_hook (varpool_node *n,
 /* Record about how many calls would benefit from given type to be final.  */
 struct odr_type_warn_count
 {
+  tree type;
   int count;
   gcov_type dyn_count;
 };
@@ -2738,6 +2739,7 @@ possible_polymorphic_call_targets (tree otr_type,
       if (binfo)
        matched_vtables.add (BINFO_VTABLE (binfo));
 
+
       /* Next walk recursively all derived types.  */
       if (context.speculative_maybe_derived_type)
        for (i = 0; i < speculative_outer_type->derived_types.length(); i++)
@@ -2818,6 +2820,8 @@ possible_polymorphic_call_targets (tree otr_type,
                  final_warning_records->type_warnings[outer_type->id].count++;
                  final_warning_records->type_warnings[outer_type->id].dyn_count
                    += final_warning_records->dyn_count;
+                 final_warning_records->type_warnings[outer_type->id].type
+                   = outer_type->type;
                  (*slot)->type_warning = outer_type->id + 1;
                }
              if (complete
@@ -3274,12 +3278,12 @@ ipa_devirt (void)
               i < final_warning_records->type_warnings.length (); i++)
            if (final_warning_records->type_warnings[i].count)
              {
-               odr_type type = odr_types[i];
-               warning_at (DECL_SOURCE_LOCATION (TYPE_NAME (type->type)),
+               tree type = final_warning_records->type_warnings[i].type;
+               warning_at (DECL_SOURCE_LOCATION (TYPE_NAME (type)),
                            OPT_Wsuggest_final_types,
                            "Declaring type %qD final "
                            "would enable devirtualization of %i calls",
-                           type->type,
+                           type,
                            final_warning_records->type_warnings[i].count);
              }
        }