aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraph.h
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2014-10-03 21:52:11 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2014-10-03 19:52:11 +0000
commitf9bb202b35f949eecb48adf75f9a0c5b117978d2 (patch)
tree985ae03907469842ffadf25aece38775da66d63a /gcc/cgraph.h
parent8a5b2f56c4c9d80c8ac2c31c82304681f4e9da80 (diff)
downloadgcc-f9bb202b35f949eecb48adf75f9a0c5b117978d2.zip
gcc-f9bb202b35f949eecb48adf75f9a0c5b117978d2.tar.gz
gcc-f9bb202b35f949eecb48adf75f9a0c5b117978d2.tar.bz2
cgraph.h (struct indirect_call_info): Add IN_POLYMORPHIC_CDTOR
* cgraph.h (struct indirect_call_info): Add IN_POLYMORPHIC_CDTOR * lto-cgraph.c (lto_output_edge, input_edge): Stream in_polymorphic_cdtor * cgraph.c (symbol_table::create_edge): Compute in_polymorphic_cdtor. (cgraph_edge::make_speculative): Copy in_polymorphic_cdtor. * cgraphclones.c (cgraph_edge::clone): Likewise. * ipa-prop.c (update_jump_functions_after_inlining, try_make_edge_direct_virtual_call): Pass in_polymorphic_cdtor to possible_dynamic_type_change. (decl_maybe_in_construction_p): Allow empty OUTER_TYPE and BASE. (ipa_polymorphic_call_context::possible_dynamic_type_change): Add IN_POLY_CDOTR argument. From-SVN: r215871
Diffstat (limited to 'gcc/cgraph.h')
-rw-r--r--gcc/cgraph.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 8bc6fc9..5ed078a 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -1333,7 +1333,7 @@ public:
void offset_by (HOST_WIDE_INT);
/* Use when we can not track dynamic type change. This speculatively assume
type change is not happening. */
- void possible_dynamic_type_change (tree otr_type = NULL);
+ void possible_dynamic_type_change (bool, tree otr_type = NULL);
/* Assume that both THIS and a given context is valid and strenghten THIS
if possible. Return true if any strenghtening was made.
If actual type the context is being used in is known, OTR_TYPE should be
@@ -1512,6 +1512,9 @@ struct GTY((chain_next ("%h.next_caller"), chain_prev ("%h.prev_caller"))) cgrap
Optimizers may later redirect direct call to clone, so 1) and 3)
do not need to necesarily agree with destination. */
unsigned int speculative : 1;
+ /* Set to true when caller is a constructor or destructor of polymorphic
+ type. */
+ unsigned in_polymorphic_cdtor : 1;
private:
/* Remove the edge from the list of the callers of the callee. */