https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81936

--- Comment #8 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to rguent...@suse.de from comment #7)
> Ah, yeah.  And we can have both, right?

I'd say so. There's f.i. libgomp.c/target-9.c, which contains '#pragma omp
target' and uses -flto.

> So we'd either need a separate
> set of early debug sections or use a combined for both (this is what
> will happen if you add && !flag_generate_offload I guess).

I tried this patch:
...
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 0c339bd46f0..92b43db1bae 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -30526,7 +30526,7 @@ dwarf2out_early_finish (const char *filename)
   early_dwarf_finished = true;

   /* Do not generate DWARF assembler now when not producing LTO bytecode.  */
-  if (!flag_generate_lto)
+  if (!flag_generate_lto && !flag_generate_offload)
     return;

   /* Now as we are going to output for LTO initialize sections and labels
...
but found it doesn't work because flag_generate_offload is actually false.

I'm now trying this (code snippet copied from symbol_table::compile), but I'm
not sure if setting flag_generate_offload is the proper solution, and if so,
where it should be inserted:
...
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index e8cc765095d..29a1d038b0e 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -2586,6 +2586,10 @@ symbol_table::finalize_compilation_unit (void)
   current_function_decl = NULL;
   set_cfun (NULL);

+  /* Offloading requires LTO infrastructure.  */
+  if (!in_lto_p && g->have_offload)
+    flag_generate_offload = 1;
+
   /* Do not skip analyzing the functions if there were errors, we
      miss diagnostics for following functions otherwise.  */

...

Reply via email to