[Ada] Unnesting: properly handle local subprogram in declare blocks
authorEd Schonberg <schonberg@adacore.com>
Wed, 30 May 2018 08:56:44 +0000 (08:56 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Wed, 30 May 2018 08:56:44 +0000 (08:56 +0000)
commit86f3285755adabb3556eb35bfce5ec9846c524b6
tree8f4f1f16f45fadc9196cb5c56e88d9da2ab8b53a
parent2a5ec8e662ad5fd0228e6feb34acd5485c47b8f2
[Ada] Unnesting: properly handle local subprogram in declare blocks

2018-05-30  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_ch7.adb (Check_Unnesting_Elaboration_Code): The statement part of
a package body that is a compilation unit may contain blocks that
declare local subprograms.  In Subprogram_Unnesting Mode such
subprograms must be handled as nested inside the (implicit) elaboration
procedure that executes that statement part. To handle properly uplevel
references we construct that subprogram explicitly, to contain blocks
and inner subprograms, The statement part of the compilation unit
becomes a call to this subprogram. This is only done if blocks are
present in the statement list of the body.

From-SVN: r260927
gcc/ada/ChangeLog
gcc/ada/exp_ch7.adb