ipa-icf: skip variables with body_removed
authorMartin Liska <mliska@suse.cz>
Wed, 18 May 2022 13:07:53 +0000 (15:07 +0200)
committerMartin Liska <mliska@suse.cz>
Thu, 23 Jun 2022 10:10:09 +0000 (12:10 +0200)
Similarly to cgraph_nodes, it may happen that body_removed is set
during merging of symbols.

PR ipa/105600

gcc/ChangeLog:

* ipa-icf.cc (sem_item_optimizer::filter_removed_items):
Skip variables with body_removed.

(cherry picked from commit 31ce821a790caec8a2849dd67a9847e78a33d14c)

gcc/ipa-icf.cc

index 765ae74..6528a7a 100644 (file)
@@ -2411,10 +2411,11 @@ sem_item_optimizer::filter_removed_items (void)
            {
              /* Filter out non-readonly variables.  */
              tree decl = item->decl;
-             if (TREE_READONLY (decl))
-               filtered.safe_push (item);
-             else
+             varpool_node *vnode = static_cast <sem_variable *>(item)->get_node ();
+             if (!TREE_READONLY (decl) || vnode->body_removed)
                remove_item (item);
+             else
+               filtered.safe_push (item);
            }
         }
     }