aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2014-11-14 01:22:28 +0100
committerMartin Jambor <jamborm@gcc.gnu.org>2014-11-14 01:22:28 +0100
commit6ff65dd7d59139e120d1dcdb54d5a5bb0d07e2c0 (patch)
treee6e110d0ed358b2d81ee2dfd2f67652dbc21d6c3 /gcc
parent453f025aa7a1746bd14875577402b1ae7f09ddbd (diff)
downloadgcc-6ff65dd7d59139e120d1dcdb54d5a5bb0d07e2c0.zip
gcc-6ff65dd7d59139e120d1dcdb54d5a5bb0d07e2c0.tar.gz
gcc-6ff65dd7d59139e120d1dcdb54d5a5bb0d07e2c0.tar.bz2
cgraph.h (clear_outer_type): Make public.
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cgraph.h10
-rw-r--r--gcc/ipa-devirt.c5
3 files changed, 13 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 25da2a0..98d5668 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 1395bc1..82222217 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -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)
diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c
index 32c6549..5e1f571 100644
--- a/gcc/ipa-devirt.c
+++ b/gcc/ipa-devirt.c
@@ -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. */