einfo.ads, einfo.adb (Activation_Record_Component, [...]): Allow E_Discriminant.
authorArnaud Charlet <charlet@adacore.com>
Thu, 11 Jan 2018 08:50:08 +0000 (08:50 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Thu, 11 Jan 2018 08:50:08 +0000 (08:50 +0000)
2018-01-11  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* einfo.ads, einfo.adb (Activation_Record_Component,
Set_Activation_Record_Component, Set_Is_Uplevel_Referenced_Entity):
Allow E_Discriminant.

From-SVN: r256481

gcc/ada/ChangeLog
gcc/ada/einfo.adb
gcc/ada/einfo.ads

index e1334f815880beac469cce9ade1c669a242d8293..c1697e34a0e8e3febdfe5faf14a164ca64143fb6 100644 (file)
@@ -1,3 +1,9 @@
+2018-01-11  Arnaud Charlet  <charlet@adacore.com>
+
+       * einfo.ads, einfo.adb (Activation_Record_Component,
+       Set_Activation_Record_Component, Set_Is_Uplevel_Referenced_Entity):
+       Allow E_Discriminant.
+
 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc-interface/decl.c (gnat_to_gnu_component_type): Apply the check
index 5968a7337711c1d3920aedd2660f8fcf123edd55..ae37b5e6857331101b166392754fb167c9d2ff87 100644 (file)
@@ -742,6 +742,7 @@ package body Einfo is
    function Activation_Record_Component (Id : E) return E is
    begin
       pragma Assert (Ekind_In (Id, E_Constant,
+                                   E_Discriminant,
                                    E_In_Parameter,
                                    E_In_Out_Parameter,
                                    E_Loop_Parameter,
@@ -3932,6 +3933,7 @@ package body Einfo is
    procedure Set_Activation_Record_Component (Id : E; V : E) is
    begin
       pragma Assert (Ekind_In (Id, E_Constant,
+                                   E_Discriminant,
                                    E_In_Parameter,
                                    E_In_Out_Parameter,
                                    E_Loop_Parameter,
@@ -5925,7 +5927,7 @@ package body Einfo is
    procedure Set_Is_Uplevel_Referenced_Entity (Id : E; V : B := True) is
    begin
       pragma Assert
-        (Ekind_In (Id, E_Constant, E_Variable)
+        (Ekind_In (Id, E_Constant, E_Variable, E_Discriminant)
           or else Is_Formal (Id)
           or else Is_Type (Id));
       Set_Flag283 (Id, V);
index dd6652b05663476451a2b24598a95fa0218613df..e0c7fcfff8df8e35d48e2919997c5dbfad9640f5 100644 (file)
@@ -364,11 +364,12 @@ package Einfo is
 --       the IP routine to avoid performing this elaboration twice.
 
 --    Activation_Record_Component (Node31)
---       Defined in E_Variable, E_Constant, E_Loop_Parameter, E_In_Parameter,
---       E_Out_Parameter, E_In_Out_Parameter nodes. Used only if we are in
---       Opt.Unnest_Subprogram_Mode, in which case for the case of an uplevel
---       referenced entity, this field contains the entity for the component
---       in the generated ARECnT activation record (Exp_Unst for details).
+--       Defined in E_Variable, E_Constant, E_Discriminant, E_Loop_Parameter,
+--       E_In_Parameter, E_Out_Parameter, E_In_Out_Parameter nodes. Used only
+--       if we are in Opt.Unnest_Subprogram_Mode, in which case for the case of
+--       an uplevel referenced entity, this field contains the entity for the
+--       component in the generated ARECnT activation record (Exp_Unst for
+--       details).
 
 --    Actual_Subtype (Node17)
 --       Defined in variables, constants, and formal parameters. This is the
@@ -3317,11 +3318,12 @@ package Einfo is
 --       Defined in all entities. Used when unnesting subprograms to indicate
 --       that an entity is locally defined within a subprogram P, and there is
 --       a reference to the entity within a subprogram nested within P (at any
---       depth). Set for uplevel referenced objects (variables, constants and
---       loop parameters), and also for upreferenced dynamic types, including
---       the cases where the reference is implicit (e.g. the type of an array
---       used for computing the location of an element in an array. This is
---       used internally in Exp_Unst, see this package for further details.
+--       depth). Set for uplevel referenced objects (variables, constants,
+--       discriminants and loop parameters), and also for upreferenced dynamic
+--       types, including the cases where the reference is implicit (e.g. the
+--       type of an array used for computing the location of an element in an
+--       array. This is used internally in Exp_Unst, see this package for
+--       further details.
 
 --    Is_Valued_Procedure (Flag127)
 --       Defined in procedure entities. Set if an Import_Valued_Procedure