[Ada] Don't create empty activation records
authorEd Schonberg <schonberg@adacore.com>
Mon, 28 May 2018 08:54:34 +0000 (08:54 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 28 May 2018 08:54:34 +0000 (08:54 +0000)
2018-05-28  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_unst.adb (Unnest_Subprogram): Prevent creation of empty
activation records.

From-SVN: r260831

gcc/ada/ChangeLog
gcc/ada/exp_unst.adb

index d724ee9f93385d97289efe771b6ba332a22a56c6..8b0951c18a4bd03ec3c1c18beee4b316bebdb069 100644 (file)
@@ -1,3 +1,8 @@
+2018-05-28  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_unst.adb (Unnest_Subprogram): Prevent creation of empty
+       activation records.
+
 2018-05-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * exp_unst.adb (Check_Static_Type): Add argument to indicate node to be
index fbc52b79f4ac3ed290de5de5a739ac5b9a0c4749..e2ecafc331f59baac087091df2dfe2752577f133 100644 (file)
@@ -411,10 +411,13 @@ package body Exp_Unst is
                   --  Entity name case. Make sure that the entity is declared
                   --  in a subprogram. This may not be the case for for a type
                   --  in a loop appearing in a precondition.
+                  --  Exclude explicitly  discriminants (that can appear
+                  --  in bounds of discriminated components).
 
                   if Is_Entity_Name (N) then
                      if Present (Entity (N))
                        and then Present (Enclosing_Subprogram (Entity (N)))
+                       and then Ekind (Entity (N)) /= E_Discriminant
                      then
                         Note_Uplevel_Ref
                           (E      => Entity (N),