[Ada] Port a modified expansion of Enum_Rep from GNAT to GNATprove
authorPiotr Trojanek <trojanek@adacore.com>
Mon, 17 Feb 2020 17:00:41 +0000 (18:00 +0100)
committerPierre-Marie de Rodat <derodat@adacore.com>
Mon, 8 Jun 2020 07:51:12 +0000 (03:51 -0400)
2020-06-08  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Port
changes in frontend expander.

gcc/ada/exp_spark.adb

index a54a16235a81d2f4a3fbb26430e121cd98caed90..c115a453228bc543b90068efc6010919673011d3 100644 (file)
@@ -200,7 +200,8 @@ package body Exp_SPARK is
          Analyze_And_Resolve (N, Typ);
 
       --  Whenever possible, replace a prefix which is an enumeration literal
-      --  by the corresponding literal value.
+      --  by the corresponding literal value, just like it happens in the GNAT
+      --  expander.
 
       elsif Attr_Id = Attribute_Enum_Rep then
          declare
@@ -215,15 +216,7 @@ package body Exp_SPARK is
             --  If the argument is a literal, expand it
 
             if Nkind (Expr) in N_Has_Entity
-              and then
-                (Ekind (Entity (Expr)) = E_Enumeration_Literal
-                 or else
-                   (Nkind (Expr) in N_Has_Entity
-                    and then Ekind (Entity (Expr)) = E_Constant
-                    and then Present (Renamed_Object (Entity (Expr)))
-                    and then Is_Entity_Name (Renamed_Object (Entity (Expr)))
-                    and then Ekind (Entity (Renamed_Object (Entity (Expr)))) =
-                      E_Enumeration_Literal))
+              and then Ekind (Entity (Expr)) = E_Enumeration_Literal
             then
                Exp_Attr.Expand_N_Attribute_Reference (N);
             end if;