DWARF: fix scoping for descriptions of local types
authorPierre-Marie de Rodat <derodat@adacore.com>
Wed, 12 Oct 2016 08:29:01 +0000 (08:29 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Wed, 12 Oct 2016 08:29:01 +0000 (08:29 +0000)
commitc0dbd22d2eebf14210473be5c37da77083dbbf5f
treec5f5321659839c89f2291ef5a48899111d8d7548
parent7d7f92889b79484dc5e13f63e396a9f540b6206a
DWARF: fix scoping for descriptions of local types

In Ada, it is possible to have nested subprograms in the following
configuration:

    procedure Parent is
       type T;
       [...]
       procedure Child (Value : T) is
       begin
          [...]
       end Child;
    begin
       [...]
    end Parent;

As we currently generate debugging information for Child first before
Parent, the debug info for T appears in global scope since the DIE for
Parent does not exist yet.

This patch makes sure that when we generate early debug info for a
nested function, we trigger generation for the parent function first.

gcc/

* dwarf2out.c (dwarf2out_early_global_decl): For nested
functions, call dwarf2out_decl on the parent function first.

gcc/testsuite/

* gnat.dg/debug9.adb: New testcase.

From-SVN: r241023
gcc/ChangeLog
gcc/dwarf2out.c
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/debug9.adb [new file with mode: 0644]