exp_prag.adb (Expand_Pragma_Loop_Variant): Rewrite pragma as null statement if ignored.
authorYannick Moy <moy@adacore.com>
Mon, 22 Apr 2013 10:58:05 +0000 (10:58 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 22 Apr 2013 10:58:05 +0000 (12:58 +0200)
2013-04-22  Yannick Moy  <moy@adacore.com>

* exp_prag.adb (Expand_Pragma_Loop_Variant): Rewrite pragma as
null statement if ignored.
* sem_ch6.adb (Expand_Contract_Cases): Do nothing if pragma is ignored.
* sem_prag.adb (Analyze_Pragma): Keep analyzing ignored pragmas.

From-SVN: r198135

gcc/ada/ChangeLog
gcc/ada/exp_prag.adb
gcc/ada/sem_ch6.adb
gcc/ada/sem_prag.adb

index 616d249..2885785 100644 (file)
@@ -1,3 +1,10 @@
+2013-04-22  Yannick Moy  <moy@adacore.com>
+
+       * exp_prag.adb (Expand_Pragma_Loop_Variant): Rewrite pragma as
+       null statement if ignored.
+       * sem_ch6.adb (Expand_Contract_Cases): Do nothing if pragma is ignored.
+       * sem_prag.adb (Analyze_Pragma): Keep analyzing ignored pragmas.
+
 2013-04-22  Hristian Kirtchev  <kirtchev@adacore.com>
 
        * sem_prag.adb (Analyze_Contract_Case): New routine.
index 4e41efe..38efb86 100644 (file)
@@ -1062,6 +1062,15 @@ package body Exp_Prag is
    --  Start of processing for Expand_Pragma_Loop_Variant
 
    begin
+      --  If pragma is not enabled, rewrite as Null statement. If pragma is
+      --  disabled, it has already been rewritten as a Null statement.
+
+      if Is_Ignored (N) then
+         Rewrite (N, Make_Null_Statement (Loc));
+         Analyze (N);
+         return;
+      end if;
+
       --  Locate the enclosing loop for which this assertion applies. In the
       --  case of Ada 2012 array iteration, we might be dealing with nested
       --  loops. Only the outermost loop has an identifier.
index b061a5d..ddd0a90 100644 (file)
@@ -11595,6 +11595,13 @@ package body Sem_Ch6 is
       --  Start of processing for Expand_Contract_Cases
 
       begin
+         --  Do nothing if pragma is not enabled. If pragma is disabled, it has
+         --  already been rewritten as a Null statement.
+
+         if Is_Ignored (CCs) then
+            return;
+         end if;
+
          --  Create the counter which tracks the number of case guards that
          --  evaluate to True.
 
index 64bc2e7..66d772c 100644 (file)
@@ -6768,7 +6768,7 @@ package body Sem_Prag is
 
       Check_Applicable_Policy (N);
 
-      --  If pragma is disable, rewrite as Null statement and skip analysis
+      --  If pragma is disabled, rewrite as Null statement and skip analysis
 
       if Is_Disabled (N) then
          Rewrite (N, Make_Null_Statement (Loc));
@@ -8733,14 +8733,6 @@ package body Sem_Prag is
             GNAT_Pragma;
             Check_Arg_Count (1);
 
-            --  Completely ignore if not enabled
-
-            if Is_Ignored (N) then
-               Rewrite (N, Make_Null_Statement (Loc));
-               Analyze (N);
-               return;
-            end if;
-
             --  Check the placement of the pragma
 
             if not Is_List_Member (N) then
@@ -13893,14 +13885,6 @@ package body Sem_Prag is
             Check_Arg_Count (1);
             Check_Loop_Pragma_Placement;
 
-            --  Completely ignore if not enabled
-
-            if Is_Ignored (N) then
-               Rewrite (N, Make_Null_Statement (Loc));
-               Analyze (N);
-               return;
-            end if;
-
             Preanalyze_Assert_Expression (Expression (Arg1), Any_Boolean);
 
             --  Transform pragma Loop_Invariant into equivalent pragma Check
@@ -13964,14 +13948,6 @@ package body Sem_Prag is
             Check_At_Least_N_Arguments (1);
             Check_Loop_Pragma_Placement;
 
-            --  Completely ignore if not enabled
-
-            if Is_Ignored (N) then
-               Rewrite (N, Make_Null_Statement (Loc));
-               Analyze (N);
-               return;
-            end if;
-
             --  Process all increasing / decreasing expressions
 
             Variant := First (Pragma_Argument_Associations (N));