[Ada] Unnesting: robustify analysis of block statements
authorEd Schonberg <schonberg@adacore.com>
Mon, 11 Jun 2018 09:17:45 +0000 (09:17 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 11 Jun 2018 09:17:45 +0000 (09:17 +0000)
2018-06-11  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_ch7.adb (Check_Unnesting_Elaboration_Code): Add guard.

From-SVN: r261409

gcc/ada/ChangeLog
gcc/ada/exp_ch7.adb

index d0722f772d8512591f819dfab6f03f1ef8da2dce..b8a5ea4cbec61919d47d86760cadedbbf84f91d3 100644 (file)
@@ -1,3 +1,7 @@
+2018-06-11  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Add guard.
+
 2018-06-11  Ed Schonberg  <schonberg@adacore.com>
 
        * exp_unst.adb (Visit_Node): Skip generic associations.
index c3707bb2eb8224d9558d5f9a01b23ba2a8f7c727..663d9740bf6acf255cf38a6c79b150d0da29f0cc 100644 (file)
@@ -4002,10 +4002,8 @@ package body Exp_Ch7 is
       then
          Stat := First (Statements (Handled_Statement_Sequence (N)));
          while Present (Stat) loop
-            if Nkind (Stat) = N_Block_Statement then
-               exit;
-            end if;
-
+            exit when Nkind (Stat) = N_Block_Statement
+              and then Present (Identifier (Stat));
             Next (Stat);
          end loop;
 
@@ -4046,7 +4044,9 @@ package body Exp_Ch7 is
               First (Statements (Handled_Statement_Sequence (Elab_Body)));
 
             while Present (Stat) loop
-               if Nkind (Stat) = N_Block_Statement then
+               if Nkind (Stat) = N_Block_Statement
+                 and then Present (Identifier (Stat))
+               then
                   Set_Scope (Entity (Identifier (Stat)), Elab_Proc);
                end if;