diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-10-03 21:52:11 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-10-03 19:52:11 +0000 |
commit | f9bb202b35f949eecb48adf75f9a0c5b117978d2 (patch) | |
tree | 985ae03907469842ffadf25aece38775da66d63a /gcc/cgraph.h | |
parent | 8a5b2f56c4c9d80c8ac2c31c82304681f4e9da80 (diff) | |
download | gcc-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.h | 5 |
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. */ |