Hi,

this is a regression present on all active branches: the attached testcase 
fails to link with debug info in LTO mode because of an undefined reference to 
a symbol coming from the object files containing the early debug info.

Tested on x86_64-suse-linux, OK for all active branches?


2019-20-25  Eric Botcazou  <ebotca...@adacore.com>

        * dwarf2out.c (dwarf2out_size_function): Run in early-DWARF mode.


2019-20-25  Eric Botcazou  <ebotca...@adacore.com>

        * gnat.dg/lto24.adb: New test.
        * gnat.dg/lto24_pkg1.ads: New helper.
        * gnat.dg/lto24_pkg2.ad[sb]: Likewise.

-- 
Eric Botcazou
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index fe46c7e1eee..1fcb19a0489 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -27610,6 +27610,7 @@ dwarf2out_inline_entry (tree block)
 static void
 dwarf2out_size_function (tree decl)
 {
+  set_early_dwarf s;
   function_to_dwarf_procedure (decl);
 }
 
-- { dg-do link }
-- { dg-options "-O -g -flto" { target lto } }

with Lto24_Pkg1;

procedure Lto24 is
  R : Lto24_Pkg1.Rec (False);
begin
  R.Empty := True;
end;
with Lto24_Pkg2;

package Lto24_Pkg1 is

  Max_Elem : constant Natural := Lto24_Pkg2.Get;

  type Arr is array (Natural range <>) of Boolean;

  type Rec (B : Boolean) is record
     I : Integer;
     case B is
       when True => A : Arr (1 .. Max_Elem);
       when False => Empty : Boolean;
     end case;
  end record;

end Lto24_Pkg1;
package Lto24_Pkg2 is

  function Get return Natural;

end Lto24_Pkg2;
package body Lto24_Pkg2 is

  function Get return Natural is
  begin
    return 16;
  end;

end Lto24_Pkg2;

Reply via email to