opt.ads (Treat_Restrictions_As_Warnings): New switch
authorRobert Dewar <dewar@adacore.com>
Tue, 20 May 2008 12:47:49 +0000 (14:47 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 20 May 2008 12:47:49 +0000 (14:47 +0200)
2008-05-20  Robert Dewar  <dewar@adacore.com>

* opt.ads (Treat_Restrictions_As_Warnings): New switch

* sem_prag.adb, par-prag.adb, restrict.ads: Implement flag
Treat_Restrictions_As_Warnings.

* switch-c.adb: Recognize new switch -gnatr

* usage.adb: Add line for -gnatr

From-SVN: r135632

gcc/ada/opt.ads
gcc/ada/par-prag.adb
gcc/ada/restrict.ads
gcc/ada/sem_prag.adb
gcc/ada/switch-c.adb
gcc/ada/usage.adb

index 65a9bb4bd8dbab9690b29fa5079928271292eff1..600231c737aca1945c6998ccf4982b729a33a4c7 100644 (file)
@@ -1108,6 +1108,11 @@ package Opt is
    --  Tolerate time stamp and other consistency errors. If this flag is set to
    --  True (-t), then inconsistencies result in warnings rather than errors.
 
+   Treat_Restrictions_As_Warnings : Boolean := False;
+   --  GNAT
+   --  Set True to treat pragma Restrictions as Restriction_Warnings. Set by
+   --  -gnatr switch.
+
    Tree_Output : Boolean := False;
    --  GNAT
    --  Set to True (-gnatt) to generate output tree file
index 5067f029c92afbf364de2fd49724deb98058cd60..c8b84ab189e61006860bcd7cf007b027bf49464f 100644 (file)
@@ -234,7 +234,8 @@ function Prag (Pragma_Node : Node_Id; Semi : Source_Ptr) return Node_Id is
          elsif Id = Name_No_Dependence then
             Set_Restriction_No_Dependence
               (Unit => Expr,
-               Warn => Prag_Id = Pragma_Restriction_Warnings);
+               Warn => Prag_Id = Pragma_Restriction_Warnings
+                         or else Treat_Restrictions_As_Warnings);
          end if;
 
          Next (Arg);
index 9dacefb300565f368a7f06b0ed71884a876c66c7..fbc8a8a54f8041f0bd5e0ecb91c07046672ed99b 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2008, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -277,11 +277,12 @@ package Restrict is
      (P    : Profile_Name;
       N    : Node_Id;
       Warn : Boolean);
-   --  Sets the set of restrictions associated with the given profile
-   --  name. N is the node of the construct to which error messages
-   --  are to be attached as required. Warn is set True for the case
-   --  of Profile_Warnings where the restrictions are set as warnings
-   --  rather than legality requirements.
+   --  Sets the set of restrictions associated with the given profile name. N
+   --  is the node of the construct to which error messages are to be attached
+   --  as required. Warn is set True for the case of Profile_Warnings where the
+   --  restrictions are set as warnings rather than legality requirements, and
+   --  is also True for Profile if the Treat_Restrictions_As_Warnings flag is
+   --  set. It is false for Profile if this flag is not set.
 
    procedure Set_Restriction
      (R : All_Boolean_Restrictions;
@@ -301,7 +302,9 @@ package Restrict is
      (Unit : Node_Id;
       Warn : Boolean);
    --  Sets given No_Dependence restriction in table if not there already.
-   --  Warn is True if from Restriction_Warnings, False if from Restrictions.
+   --  Warn is True if from Restriction_Warnings, or for Restrictions if flag
+   --  Treat_Restrictions_As_Warnings is set. False if from Restrictions and
+   --  this flag is not set.
 
    function Tasking_Allowed return Boolean;
    pragma Inline (Tasking_Allowed);
index 6b8198037053f3e85d36600487d316450dfd74a4..15f4e181f7a1c79a8bbb81f6b00abbdf567892e2 100644 (file)
@@ -671,7 +671,9 @@ package body Sem_Prag is
 
       procedure Process_Restrictions_Or_Restriction_Warnings (Warn : Boolean);
       --  Common processing for Restrictions and Restriction_Warnings pragmas.
-      --  Warn is False for Restrictions, True for Restriction_Warnings.
+      --  Warn is True for Restriction_Warnings, or for Restrictions if the
+      --  flag Treat_Restrictions_As_Warnings is set, and False if this flag
+      --  is not set in the Restrictions case.
 
       procedure Process_Suppress_Unsuppress (Suppress_Case : Boolean);
       --  Common processing for Suppress and Unsuppress. The boolean parameter
@@ -4770,7 +4772,8 @@ package body Sem_Prag is
 
          --  Set the corresponding restrictions
 
-         Set_Profile_Restrictions (Ravenscar, N, Warn => False);
+         Set_Profile_Restrictions
+           (Ravenscar, N, Warn => Treat_Restrictions_As_Warnings);
       end Set_Ravenscar_Profile;
 
    --  Start of processing for Analyze_Pragma
@@ -9790,7 +9793,8 @@ package body Sem_Prag is
                if Chars (Argx) = Name_Ravenscar then
                   Set_Ravenscar_Profile (N);
                elsif Chars (Argx) = Name_Restricted then
-                  Set_Profile_Restrictions (Restricted, N, Warn => False);
+                  Set_Profile_Restrictions
+                    (Restricted, N, Warn => Treat_Restrictions_As_Warnings);
                else
                   Error_Pragma_Arg ("& is not a valid profile", Argx);
                end if;
@@ -10285,7 +10289,8 @@ package body Sem_Prag is
             GNAT_Pragma;
             Check_Arg_Count (0);
             Check_Valid_Configuration_Pragma;
-            Set_Profile_Restrictions (Restricted, N, Warn => False);
+            Set_Profile_Restrictions
+              (Restricted, N, Warn => Treat_Restrictions_As_Warnings);
 
             if Warn_On_Obsolescent_Feature then
                Error_Msg_N
@@ -10305,7 +10310,8 @@ package body Sem_Prag is
          --  | restriction_parameter_IDENTIFIER => EXPRESSION
 
          when Pragma_Restrictions =>
-            Process_Restrictions_Or_Restriction_Warnings (Warn => False);
+            Process_Restrictions_Or_Restriction_Warnings
+              (Warn => Treat_Restrictions_As_Warnings);
 
          --------------------------
          -- Restriction_Warnings --
index bd63fae88f86a1591208e490657e6139620980d8..cf59c8198cdcf4f615402d3b68e08d16604d805c 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 2001-2007, Free Software Foundation, Inc.         --
+--          Copyright (C) 2001-2008, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -660,13 +660,19 @@ package body Switch.C is
                Ptr := Ptr + 1;
                Try_Semantics := True;
 
-            --  Processing for q switch
+            --  Processing for Q switch
 
             when 'Q' =>
                Ptr := Ptr + 1;
                Force_ALI_Tree_File := True;
                Try_Semantics := True;
 
+               --  Processing for r switch
+
+            when 'r' =>
+               Ptr := Ptr + 1;
+               Treat_Restrictions_As_Warnings := True;
+
             --  Processing for R switch
 
             when 'R' =>
index 0d131e1f2e595591aa355963e564d207c05bcde7..5a1f4827eabc023fdeb4e9216c3623bda58deb7a 100644 (file)
@@ -289,6 +289,11 @@ begin
    Write_Switch_Char ("Q");
    Write_Line ("Don't quit, write ali/tree file even if compile errors");
 
+   --  Line for -gnatr switch
+
+   Write_Switch_Char ("r");
+   Write_Line ("Treat pragma Restrictions as Restriction_Warnings");
+
    --  Lines for -gnatR switch
 
    Write_Switch_Char ("R?");