diff options
author | Martin Jambor <mjambor@suse.cz> | 2014-11-14 01:22:28 +0100 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2014-11-14 01:22:28 +0100 |
commit | 6ff65dd7d59139e120d1dcdb54d5a5bb0d07e2c0 (patch) | |
tree | e6e110d0ed358b2d81ee2dfd2f67652dbc21d6c3 /gcc | |
parent | 453f025aa7a1746bd14875577402b1ae7f09ddbd (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cgraph.h | 10 | ||||
-rw-r--r-- | gcc/ipa-devirt.c | 5 |
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. */ |