Fix PR ipa/65665
authormarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 5 Apr 2015 17:17:29 +0000 (17:17 +0000)
committermarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 5 Apr 2015 17:17:29 +0000 (17:17 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221872 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ipa-icf.c

index a0e973b..f9cb04c 100644 (file)
@@ -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%
index 8626730..8f8a0cf 100644 (file)
@@ -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 ())))
             {