cgraph.h (clear_outer_type): Make public.
authorMartin Jambor <mjambor@suse.cz>
Fri, 14 Nov 2014 00:22:28 +0000 (01:22 +0100)
committerMartin Jambor <jamborm@gcc.gnu.org>
Fri, 14 Nov 2014 00:22:28 +0000 (01:22 +0100)
2014-11-14  Martin Jambor  <mjambor@suse.cz>

* cgraph.h (clear_outer_type): Make public.  Fix comment.
* ipa-devirt.c (possible_polymorphic_call_targets): Use
clear_outer_type when resetting the context.

From-SVN: r217529

gcc/ChangeLog
gcc/cgraph.h
gcc/ipa-devirt.c

index 25da2a0..98d5668 100644 (file)
@@ -1,3 +1,9 @@
+2014-11-14  Martin Jambor  <mjambor@suse.cz>
+
+       * cgraph.h (clear_outer_type): Make public.  Fix comment.
+       * ipa-devirt.c (possible_polymorphic_call_targets): Use
+       clear_outer_type when resetting the context.
+
 2014-11-13  Dominique Dhumieres  <dominiq@lps.ens.fr>
 
        PR bootstrap/63853
index 1395bc1..8222221 100644 (file)
@@ -1352,6 +1352,10 @@ public:
   /* Make context non-speculative.  */
   void clear_speculation ();
 
+  /* Produce context specifying all derrived types of OTR_TYPE.  If OTR_TYPE is
+     NULL, the context is set to dummy "I know nothing" setting.  */
+  void clear_outer_type (tree otr_type = NULL);
+
   /* Walk container types and modify context to point to actual class
      containing OTR_TYPE (if non-NULL) as base class.
      Return true if resulting context is valid.
@@ -1392,7 +1396,6 @@ private:
   bool combine_speculation_with (tree, HOST_WIDE_INT, bool, tree);
   void set_by_decl (tree, HOST_WIDE_INT);
   bool set_by_invariant (tree, tree, HOST_WIDE_INT);
-  void clear_outer_type (tree otr_type = NULL);
   bool speculation_consistent_p (tree, HOST_WIDE_INT, bool, tree);
   void make_speculative (tree otr_type = NULL);
 };
@@ -2748,9 +2751,8 @@ ipa_polymorphic_call_context::clear_speculation ()
   speculative_maybe_derived_type = false;
 }
 
-/* Produce context specifying all derrived types of OTR_TYPE.
-   If OTR_TYPE is NULL or type of the OBJ_TYPE_REF, the context is set
-   to dummy "I know nothing" setting.  */
+/* Produce context specifying all derrived types of OTR_TYPE.  If OTR_TYPE is
+   NULL, the context is set to dummy "I know nothing" setting.  */
 
 inline void
 ipa_polymorphic_call_context::clear_outer_type (tree otr_type)
index 32c6549..5e1f571 100644 (file)
@@ -2281,10 +2281,7 @@ possible_polymorphic_call_targets (tree otr_type,
   /* Without outer type, we have no use for offset.  Just do the
      basic search from innter type  */
   if (!context.outer_type)
-    {
-      context.outer_type = otr_type;
-      context.offset = 0;
-    }
+    context.clear_outer_type (otr_type);
   /* We need to update our hiearchy if the type does not exist.  */
   outer_type = get_odr_type (context.outer_type, true);
   /* If the type is complete, there are no derivations.  */