[Ada] Expand Enum_Rep attribute reference in GNATprove mode
authorYannick Moy <moy@adacore.com>
Tue, 9 Jul 2019 07:54:10 +0000 (07:54 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 9 Jul 2019 07:54:10 +0000 (07:54 +0000)
In the special GNATprove mode for proof of programs, expand the Enum_Rep
attribute reference so that a suitable static integer is in the AST
where required by the rest of analysis.

There is no impact on compilation.

2019-07-09  Yannick Moy  <moy@adacore.com>

gcc/ada/

* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
attribute reference on Enum_Rep.

From-SVN: r273276

gcc/ada/ChangeLog
gcc/ada/exp_spark.adb

index c80c9e46f23bc258b5e20ab62f300cbc9da3f31f..948d0fa30d135891d77e77be32210e35fe2f86f1 100644 (file)
@@ -1,3 +1,8 @@
+2019-07-09  Yannick Moy  <moy@adacore.com>
+
+       * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
+       attribute reference on Enum_Rep.
+
 2019-07-09  Ed Schonberg  <schonberg@adacore.com>
 
        * sem_ch12.adb (Instantiate_Formal_Package): Handle properly the
index b008c793e3d0272b6e620be234f00b65c400f080..58f924376a7763ec6c92bab254ffe0e5b0644979 100644 (file)
@@ -26,6 +26,7 @@
 with Atree;    use Atree;
 with Checks;   use Checks;
 with Einfo;    use Einfo;
+with Exp_Attr;
 with Exp_Ch4;
 with Exp_Ch5;  use Exp_Ch5;
 with Exp_Dbug; use Exp_Dbug;
@@ -196,6 +197,12 @@ package body Exp_SPARK is
              Parameter_Associations => New_List (Expr)));
          Analyze_And_Resolve (N, Typ);
 
+      --  Whenever possible, replace a prefix which is an enumeration literal
+      --  by the corresponding literal value.
+
+      elsif Attr_Id = Attribute_Enum_Rep then
+         Exp_Attr.Expand_N_Attribute_Reference (N);
+
       --  For attributes which return Universal_Integer, introduce a conversion
       --  to the expected type with the appropriate check flags set.