]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR ipa/92357 (ICE in IPA pass fnsummary in openmp offload)
authorJakub Jelinek <jakub@redhat.com>
Fri, 20 Dec 2019 17:44:50 +0000 (18:44 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 20 Dec 2019 17:44:50 +0000 (18:44 +0100)
Backported from mainline
2019-12-14  Jakub Jelinek  <jakub@redhat.com>

PR ipa/92357
* ipa-fnsummary.c (ipa_fn_summary_write): Use
lto_symtab_encoder_iterator with lsei_start_function_in_partition and
lsei_next_function_in_partition instead of walking all cgraph nodes
in encoder.

From-SVN: r279675

gcc/ChangeLog
gcc/ipa-fnsummary.c

index 744169615cc27d5c6c68ea04cf6a916e6e4d6353..ddf21f7108e3dde1e511db6585ee8a929df502a0 100644 (file)
@@ -7,6 +7,12 @@
        Backported from mainline
        2019-12-14  Jakub Jelinek  <jakub@redhat.com>
 
+       PR ipa/92357
+       * ipa-fnsummary.c (ipa_fn_summary_write): Use
+       lto_symtab_encoder_iterator with lsei_start_function_in_partition and
+       lsei_next_function_in_partition instead of walking all cgraph nodes
+       in encoder.
+
        PR tree-optimization/92930
        * ipa-pure-const.c (special_builtin_state): Don't handle
        BUILT_IN_APPLY.
index 160261d34c9e665c60d6218c3de61fc83f74b0c5..7c5562ad8014bf34f138ba393968969f3e31c58c 100644 (file)
@@ -3452,24 +3452,24 @@ static void
 ipa_fn_summary_write (void)
 {
   struct output_block *ob = create_output_block (LTO_section_ipa_fn_summary);
+  lto_symtab_encoder_iterator lsei;
   lto_symtab_encoder_t encoder = ob->decl_state->symtab_node_encoder;
   unsigned int count = 0;
-  int i;
 
-  for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
+  for (lsei = lsei_start_function_in_partition (encoder); !lsei_end_p (lsei);
+       lsei_next_function_in_partition (&lsei))
     {
-      symtab_node *snode = lto_symtab_encoder_deref (encoder, i);
-      cgraph_node *cnode = dyn_cast <cgraph_node *> (snode);
-      if (cnode && cnode->definition && !cnode->alias)
+      cgraph_node *cnode = lsei_cgraph_node (lsei);
+      if (cnode->definition && !cnode->alias)
        count++;
     }
   streamer_write_uhwi (ob, count);
 
-  for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
+  for (lsei = lsei_start_function_in_partition (encoder); !lsei_end_p (lsei);
+       lsei_next_function_in_partition (&lsei))
     {
-      symtab_node *snode = lto_symtab_encoder_deref (encoder, i);
-      cgraph_node *cnode = dyn_cast <cgraph_node *> (snode);
-      if (cnode && cnode->definition && !cnode->alias)
+      cgraph_node *cnode = lsei_cgraph_node (lsei);
+      if (cnode->definition && !cnode->alias)
        {
          struct ipa_fn_summary *info = ipa_fn_summaries->get (cnode);
          struct bitpack_d bp;