re PR ipa/65557 (ICE: SIGSEGV in hash_table<>::find_slot_with_hash() with -fdevirtualize -fipa-cp -fipa-icf-functions)

Fix PR65557.

	* ipa-icf.c (sem_function::equals_wpa): Check if IPA CP
	has already filled up function summary.
	(sem_item_optimizer::update_hash_by_addr_refs): Likewise.
	* g++.dg/ipa/pr65557.C: New test.

From-SVN: r221796
This commit is contained in:
Martin Liska 2015-03-31 18:03:03 +02:00 committed by Martin Liska
parent 78f1b5234a
commit 12cc8c723e
4 changed files with 32 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2015-03-31 Martin Liska <mliska@suse.cz>
PR ipa/65557
* ipa-icf.c (sem_function::equals_wpa): Check if IPA CP
has already filled up function summary.
(sem_item_optimizer::update_hash_by_addr_refs): Likewise.
2015-03-31 Richard Biener <rguenther@suse.de>
* tree-sra.c (create_access_replacement): Drop under-/over-alignment

View File

@ -534,7 +534,7 @@ sem_function::equals_wpa (sem_item *item,
if (opt_for_fn (decl, flag_devirtualize)
&& (TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE
|| TREE_CODE (TREE_TYPE (item->decl)) == METHOD_TYPE)
&& (!flag_ipa_cp
&& (ipa_node_params_sum == NULL
|| ipa_is_param_used (IPA_NODE_REF (dyn_cast <cgraph_node *>(node)),
0))
&& compare_polymorphic_p ())
@ -2505,7 +2505,7 @@ sem_item_optimizer::update_hash_by_addr_refs ()
&& contains_polymorphic_type_p
(method_class_type (TREE_TYPE (m_items[i]->decl)))
&& (DECL_CXX_CONSTRUCTOR_P (m_items[i]->decl)
|| ((!flag_ipa_cp
|| ((ipa_node_params_sum == NULL
|| ipa_is_param_used (
IPA_NODE_REF
(dyn_cast <cgraph_node *>(m_items[i]->node)), 0))

View File

@ -1,3 +1,7 @@
2015-03-31 Martin Liska <mliska@suse.cz>
* g++.dg/ipa/pr65557.C: New test.
2015-03-31 Dominik Vogt <vogt@linux.vnet.ibm.com>
* gcc.target/s390/hotpatch-25.c: New test.

View File

@ -0,0 +1,19 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf-details" } */
struct S0
{
S0 ()
{
}
};
struct S1
{
S1 ()
{
}
};
S0 s0;
S1 s1;