When early debug is missing at LTRANS time we create DIEs using
full-blown dwarf2out_decl.  In that case it doesn't make sense
to try adding a location again, instead that might ICE as seen
in the PR.

Bootstrapped / tested on x86_64-unknown-linux-gnu, applied to trunk sofar.

Richard.

2019-09-17  Richard Biener  <rguent...@suse.de>

        PR debug/91772
        * dwarf2out.c (dwarf2out_late_global_decl): If early dwarf
        was missing generate locations only once.

Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c     (revision 275800)
+++ gcc/dwarf2out.c     (working copy)
@@ -26647,16 +26651,12 @@ dwarf2out_late_global_decl (tree decl)
     {
       dw_die_ref die = lookup_decl_die (decl);
 
-      /* We may have to generate early debug late for LTO in case debug
+      /* We may have to generate full debug late for LTO in case debug
          was not enabled at compile-time or the target doesn't support
         the LTO early debug scheme.  */
       if (! die && in_lto_p)
-       {
-         dwarf2out_decl (decl);
-         die = lookup_decl_die (decl);
-       }
-
-      if (die)
+       dwarf2out_decl (decl);
+      else if (die)
        {
          /* We get called via the symtab code invoking late_global_decl
             for symbols that are optimized out.

Reply via email to