aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2015-04-05 19:17:29 +0200
committerMartin Liska <marxin@gcc.gnu.org>2015-04-05 17:17:29 +0000
commit8fc8c7e7d14ff1b9891b6de2d2bbe51ad5af4f70 (patch)
tree462bc3752bbf0982b38517f9b4c8608b352b56bc /gcc
parent7870a3118b1b857ad373364f80875183e0587102 (diff)
downloadgcc-8fc8c7e7d14ff1b9891b6de2d2bbe51ad5af4f70.zip
gcc-8fc8c7e7d14ff1b9891b6de2d2bbe51ad5af4f70.tar.gz
gcc-8fc8c7e7d14ff1b9891b6de2d2bbe51ad5af4f70.tar.bz2
re PR middle-end/65665 (g++.dg/torture/pr64378.C -O2 -flto -fno-use-linker-plugin -flto-partition=none)
Fix PR ipa/65665 PR ipa/65665 * ipa-icf.c (sem_function::equals_wpa): Verify that IPA CP has computed data structure. (sem_item_optimizer::update_hash_by_addr_refs): Likewise. From-SVN: r221872
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/ipa-icf.c10
2 files changed, 13 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a0e973b..f9cb04c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2015-04-05 Martin Liska <mliska@suse.cz>
+
+ PR ipa/65665
+ * ipa-icf.c (sem_function::equals_wpa): Verify that IPA CP
+ has computed data structure.
+ (sem_item_optimizer::update_hash_by_addr_refs): Likewise.
+
2015-04-04 Jan Hubicka <hubicka@ucw.cz>
* invoke.texi (inline-unit-growth): Increase growth to 20%
diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
index 8626730..8f8a0cf 100644
--- a/gcc/ipa-icf.c
+++ b/gcc/ipa-icf.c
@@ -535,7 +535,8 @@ sem_function::equals_wpa (sem_item *item,
&& (TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE
|| TREE_CODE (TREE_TYPE (item->decl)) == METHOD_TYPE)
&& (ipa_node_params_sum == NULL
- || ipa_is_param_used (IPA_NODE_REF (dyn_cast <cgraph_node *>(node)),
+ || IPA_NODE_REF (get_node ())->descriptors.is_empty ()
+ || ipa_is_param_used (IPA_NODE_REF (get_node ()),
0))
&& compare_polymorphic_p ())
{
@@ -2501,14 +2502,15 @@ sem_item_optimizer::update_hash_by_addr_refs ()
m_items[i]->update_hash_by_addr_refs (m_symtab_node_map);
if (m_items[i]->type == FUNC)
{
+ cgraph_node *cnode = dyn_cast <cgraph_node *> (m_items[i]->node);
+
if (TREE_CODE (TREE_TYPE (m_items[i]->decl)) == METHOD_TYPE
&& contains_polymorphic_type_p
(method_class_type (TREE_TYPE (m_items[i]->decl)))
&& (DECL_CXX_CONSTRUCTOR_P (m_items[i]->decl)
|| ((ipa_node_params_sum == NULL
- || ipa_is_param_used (
- IPA_NODE_REF
- (dyn_cast <cgraph_node *>(m_items[i]->node)), 0))
+ || IPA_NODE_REF (cnode)->descriptors.is_empty ()
+ || ipa_is_param_used (IPA_NODE_REF (cnode), 0))
&& static_cast<sem_function *> (m_items[i])
->compare_polymorphic_p ())))
{