]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
scos.ads (In_Decision): Add missing entry for 'a'.
authorThomas Quinot <quinot@adacore.com>
Wed, 2 Jan 2013 09:24:58 +0000 (09:24 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 2 Jan 2013 09:24:58 +0000 (10:24 +0100)
2013-01-02  Thomas Quinot  <quinot@adacore.com>

* scos.ads (In_Decision): Add missing entry for 'a'.
* sem_prag.adb (Analyze_Pragma, case pragma Check): Omit
call to Set_SCO_Pragma_Enabled for Invariant and Predicate.
* sem_ch13.adb: Minor comment update.

From-SVN: r194777

gcc/ada/ChangeLog
gcc/ada/scos.ads
gcc/ada/sem_ch13.adb
gcc/ada/sem_prag.adb

index 2bb659a52debcb7a5913825602909ccb71435e63..d9e57feb06ae76d86b19a6f9f63fa6b636c9cb37 100644 (file)
@@ -1,3 +1,10 @@
+2013-01-02  Thomas Quinot  <quinot@adacore.com>
+
+       * scos.ads (In_Decision): Add missing entry for 'a'.
+       * sem_prag.adb (Analyze_Pragma, case pragma Check): Omit
+       call to Set_SCO_Pragma_Enabled for Invariant and Predicate.
+       * sem_ch13.adb: Minor comment update.
+
 2012-12-21  Ed Schonberg  <schonberg@adacore.com>
 
        PR ada/53737
index 0082099afb487be3218ab6901ea21f0c8c7a971b..dc4248e12d9029ec09f60c833563320b12b91e6e 100644 (file)
@@ -385,8 +385,8 @@ package SCOs is
      Table_Increment      => 300);
 
    Is_Decision : constant array (Character) of Boolean :=
-     ('E' | 'G' | 'I' | 'P' | 'A' | 'W' | 'X' => True,
-      others                                  => False);
+     ('E' | 'G' | 'I' | 'P' | 'a' | 'A' | 'W' | 'X' => True,
+      others                                        => False);
    --  Indicates which C1 values correspond to decisions
 
    --  The SCO_Table_Entry values appear as follows:
index eee75d52a1e2626b64122cdf9a2f62fc793b445e..38be20c7426cac7ce553752af069455afbd1ffef 100644 (file)
@@ -5229,8 +5229,7 @@ package body Sem_Ch13 is
 
                Exp := New_Copy_Tree (Arg2);
 
-               --  Preserve sloc of original pragma Invariant (this is required
-               --  by Par_SCO).
+               --  Preserve sloc of original pragma Invariant
 
                Loc := Sloc (Ritem);
 
index b44df5ad1502869a42410e549896d957e76995fd..e405c3d388c731177f7667e1303ee0d7a564bf2c 100644 (file)
@@ -2233,7 +2233,7 @@ package body Sem_Prag is
               (Get_Pragma_Arg (Arg2), Standard_String);
          end if;
 
-         --  For a pragma in the extended main source unit, record enabled
+         --  For a pragma PPC in the extended main source unit, record enabled
          --  status in SCO.
 
          --  This may seem redundant with the call to Check_Enabled occurring
@@ -7449,8 +7449,9 @@ package body Sem_Prag is
          --              [,[Message =>] String_EXPRESSION]);
 
          when Pragma_Check => Check : declare
-            Expr : Node_Id;
-            Eloc : Source_Ptr;
+            Expr  : Node_Id;
+            Eloc  : Source_Ptr;
+            Cname : Name_Id;
 
             Check_On : Boolean;
             --  Set True if category of assertions referenced by Name enabled
@@ -7477,14 +7478,28 @@ package body Sem_Prag is
                return;
             end if;
 
-            --  Indicate if pragma is enabled. The Original_Node reference here
-            --  is to deal with pragma Assert rewritten as a Check pragma.
+            Cname := Chars (Get_Pragma_Arg (Arg1));
+            Check_On := Check_Enabled (Cname);
 
-            Check_On := Check_Enabled (Chars (Get_Pragma_Arg (Arg1)));
+            case Cname is
+               when Name_Predicate |
+                    Name_Invariant =>
 
-            if Check_On and then not Split_PPC (N) then
-               Set_SCO_Pragma_Enabled (Loc);
-            end if;
+                  --  Nothing to do: since checks occur in client units,
+                  --  the SCO for the aspect in the declaration unit is
+                  --  conservatively always enabled.
+
+                  null;
+
+               when others =>
+
+                  if Check_On and then not Split_PPC (N) then
+
+                     --  Mark pragma/aspect SCO as enabled
+
+                     Set_SCO_Pragma_Enabled (Loc);
+                  end if;
+            end case;
 
             --  If expansion is active and the check is not enabled then we
             --  rewrite the Check as: