openmp: ensure variables in offload table are streamed out (PRs 94848 + 95551)
authorTobias Burnus <tobias@codesourcery.com>
Tue, 9 Jun 2020 14:31:22 +0000 (16:31 +0200)
committerTobias Burnus <tobias@codesourcery.com>
Tue, 9 Jun 2020 14:31:22 +0000 (16:31 +0200)
gcc/ChangeLog:

* omp-offload.c (add_decls_addresses_to_decl_constructor,
omp_finish_file): With in_lto_p, stream out all offload-table
items even if the symtab_node does not exist.

gcc/omp-offload.c

index 4e44cfc9d0a2e9246d5438b1a35deb5a8b95abf6..32c2485abd422339105bd3deae5b9a21a03e5db6 100644 (file)
@@ -126,7 +126,7 @@ add_decls_addresses_to_decl_constructor (vec<tree, va_gc> *v_decls,
          && lookup_attribute ("omp declare target link", DECL_ATTRIBUTES (it));
 
       /* See also omp_finish_file and output_offload_tables in lto-cgraph.c.  */
-      if (!symtab_node::get (it))
+      if (!in_lto_p && !symtab_node::get (it))
        continue;
 
       tree size = NULL_TREE;
@@ -382,14 +382,14 @@ omp_finish_file (void)
          tree it = (*offload_funcs)[i];
          /* See also add_decls_addresses_to_decl_constructor
             and output_offload_tables in lto-cgraph.c.  */
-         if (!symtab_node::get (it))
+         if (!in_lto_p && !symtab_node::get (it))
            continue;
          targetm.record_offload_symbol (it);
        }
       for (unsigned i = 0; i < num_vars; i++)
        {
          tree it = (*offload_vars)[i];
-         if (!symtab_node::get (it))
+         if (!in_lto_p && !symtab_node::get (it))
            continue;
 #ifdef ACCEL_COMPILER
          if (DECL_HAS_VALUE_EXPR_P (it)