[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Fri, 22 May 2015 10:20:00 +0000 (12:20 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 22 May 2015 10:20:00 +0000 (12:20 +0200)
2015-05-22  Eric Botcazou  <ebotcazou@adacore.com>

* sem_ch8.adb (Analyze_Object_Renaming): Copy
Has_Volatile_Full_Access from renamed to renaming entities.
* sem_prag.adb (Process_Atomic_Independent_Shared_Volatile):
Tidy up and remove redundant setting of Has_Volatile_Full_Access.

2015-05-22  Hristian Kirtchev  <kirtchev@adacore.com>

* ghost.adb (Check_Ghost_Completion): Update references to SPARK
RM 6.9 rules.
(Check_Ghost_Policy): Update references to SPARK RM 6.9 rules.
* sem_ch3.adb (Analyze_Object_Declaration): Update references
to SPARK RM 6.9 rules.
(Check_Completion): Ghost entities do not require a special form of
completion.
* sem_ch6.adb (Analyze_Generic_Subprogram_Body): Update references
to SPARK RM 6.9 rules.
(Analyze_Subprogram_Body_Helper): Update references to SPARK RM 6.9
rules.
* sem_ch7.adb (Analyze_Package_Body_Helper): Update references
to SPARK RM 6.9 rules.
(Requires_Completion_In_Body): Ghost entities do not require a special
form of completion.

2015-05-22  Robert Dewar  <dewar@adacore.com>

* a-csquin.ads: Use Ada 2012 notation.
* sem_ch8.adb: Minor reformatting.

2015-05-22  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Import
acts as a completion.

From-SVN: r223534

gcc/ada/ChangeLog
gcc/ada/a-csquin.ads
gcc/ada/ghost.adb
gcc/ada/sem_ch13.adb
gcc/ada/sem_ch3.adb
gcc/ada/sem_ch6.adb
gcc/ada/sem_ch7.adb
gcc/ada/sem_ch8.adb
gcc/ada/sem_prag.adb

index 7e59e554eaf9a4ad1f6a01d4d26800b6429f68e1..cc91e17dbbfd2bc9be3b807cc606293539cc1606 100644 (file)
@@ -1,3 +1,38 @@
+2015-05-22  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * sem_ch8.adb (Analyze_Object_Renaming): Copy
+       Has_Volatile_Full_Access from renamed to renaming entities.
+       * sem_prag.adb (Process_Atomic_Independent_Shared_Volatile):
+       Tidy up and remove redundant setting of Has_Volatile_Full_Access.
+
+2015-05-22  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * ghost.adb (Check_Ghost_Completion): Update references to SPARK
+       RM 6.9 rules.
+       (Check_Ghost_Policy): Update references to SPARK RM 6.9 rules.
+       * sem_ch3.adb (Analyze_Object_Declaration): Update references
+       to SPARK RM 6.9 rules.
+       (Check_Completion): Ghost entities do not require a special form of
+       completion.
+       * sem_ch6.adb (Analyze_Generic_Subprogram_Body): Update references
+       to SPARK RM 6.9 rules.
+       (Analyze_Subprogram_Body_Helper): Update references to SPARK RM 6.9
+       rules.
+       * sem_ch7.adb (Analyze_Package_Body_Helper): Update references
+       to SPARK RM 6.9 rules.
+       (Requires_Completion_In_Body): Ghost entities do not require a special
+       form of completion.
+
+2015-05-22  Robert Dewar  <dewar@adacore.com>
+
+       * a-csquin.ads: Use Ada 2012 notation.
+       * sem_ch8.adb: Minor reformatting.
+
+2015-05-22  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Import
+       acts as a completion.
+
 2015-05-22  Ed Schonberg  <schonberg@adacore.com>
 
        * sem_ch13.adb: Minor reformatting.
index 7567444177e691d982428c16213cb5f4c5b09835..c9957a35d28c2586403f576a53a08d7227e398dc 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---            Copyright (C) 2011, Free Software Foundation, Inc.            --
+--          Copyright (C) 2011-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -41,25 +41,13 @@ package Ada.Containers.Synchronized_Queue_Interfaces is
 
    procedure Enqueue
      (Container : in out Queue;
-      New_Item  : Element_Type) is abstract;
-
-   --  ???
-   --  This is the official Ada 2012 syntax:
-   --  with Synchronization => By_Entry;
-
-   --  This is the temporary work-around:
-   pragma Implemented (Enqueue, By_Entry);
+      New_Item  : Element_Type) is abstract
+   with Synchronization => By_Entry;
 
    procedure Dequeue
      (Container : in out Queue;
-      Element   : out Element_Type) is abstract;
-
-   --  ???
-   --  This is the official Ada 2012 syntax:
-   --  with Synchronization => By_Entry;
-
-   --  This is the temporary work-around:
-   pragma Implemented (Dequeue, By_Entry);
+      Element   : out Element_Type) is abstract
+   with Synchronization => By_Entry;
 
    function Current_Use (Container : Queue) return Count_Type is abstract;
 
index 2c3be8f4e439c8be636c2667a726de17655709fa..b608a450e648799318e19a22ed6a04d4aacf7b3d 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---            Copyright (C) 2014-2015, Free Software Foundation, Inc.       --
+--          Copyright (C) 2014-2015, 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- --
@@ -106,7 +106,7 @@ package body Ghost is
 
    begin
       --  The Ghost policy in effect at the point of declaration and at the
-      --  point of completion must match (SPARK RM 6.9(15)).
+      --  point of completion must match (SPARK RM 6.9(14)).
 
       if Is_Checked_Ghost_Entity (Partial_View)
         and then Policy = Name_Ignore
@@ -411,7 +411,7 @@ package body Ghost is
 
       else
          Error_Msg_N
-           ("ghost entity cannot appear in this context (SPARK RM 6.9(12))",
+           ("ghost entity cannot appear in this context (SPARK RM 6.9(11))",
             Ghost_Ref);
       end if;
    end Check_Ghost_Context;
index eb2c095c2103ba95fdd46551fbea1dd4fa504e3c..474aa5e7c6f955e5c1d56d584aebf1830e908d53 100644 (file)
@@ -3115,6 +3115,7 @@ package body Sem_Ch13 is
                      then
                         if A_Id = Aspect_Import then
                            Set_Is_Imported (E);
+                           Set_Has_Completion (E);
 
                            --  An imported entity cannot have an explicit
                            --  initialization.
index 47f6e701b1712ecbdbc96d010e1be5788847adfe..65c85762ef7177be74dc5bee2adb6858845e1baf 100644 (file)
@@ -4055,7 +4055,7 @@ package body Sem_Ch3 is
 
                   --  The Ghost policy in effect at the point of declaration
                   --  and at the point of completion must match
-                  --  (SPARK RM 6.9(15)).
+                  --  (SPARK RM 6.9(14)).
 
                   if Present (Prev_Entity)
                     and then Is_Ghost_Entity (Prev_Entity)
@@ -4237,7 +4237,7 @@ package body Sem_Ch3 is
          Set_Is_Ghost_Entity (Id);
 
          --  The Ghost policy in effect at the point of declaration and at the
-         --  point of completion must match (SPARK RM 6.9(16)).
+         --  point of completion must match (SPARK RM 6.9(14)).
 
          if Present (Prev_Entity) and then Is_Ghost_Entity (Prev_Entity) then
             Check_Ghost_Completion (Prev_Entity, Id);
@@ -10937,12 +10937,6 @@ package body Sem_Ch3 is
          if Is_Intrinsic_Subprogram (E) then
             null;
 
-         --  A Ghost entity declared in a non-Ghost package does not force the
-         --  need for a body (SPARK RM 6.9(11)).
-
-         elsif not Is_Ghost_Entity (Pack_Id) and then Is_Ghost_Entity (E) then
-            null;
-
          --  The following situation requires special handling: a child unit
          --  that appears in the context clause of the body of its parent:
 
@@ -19964,7 +19958,7 @@ package body Sem_Ch3 is
          Set_Is_Ghost_Entity (Full_T);
 
          --  The Ghost policy in effect at the point of declaration and at the
-         --  point of completion must match (SPARK RM 6.9(15)).
+         --  point of completion must match (SPARK RM 6.9(14)).
 
          Check_Ghost_Completion (Priv_T, Full_T);
 
index 001365b712f765478b6b7f49f1e74b1d2897a709..e366af2ac025a05a4c83ddf4be2dc103ef03e4ce 100644 (file)
@@ -1267,7 +1267,7 @@ package body Sem_Ch6 is
             Set_Is_Ghost_Entity (Body_Id);
 
             --  The Ghost policy in effect at the point of declaration and at
-            --  the point of completion must match (SPARK RM 6.9(15)).
+            --  the point of completion must match (SPARK RM 6.9(14)).
 
             Check_Ghost_Completion (Gen_Id, Body_Id);
          end if;
@@ -3265,7 +3265,7 @@ package body Sem_Ch6 is
                Set_Is_Ghost_Entity (Body_Id);
 
                --  The Ghost policy in effect at the point of declaration and
-               --  at the point of completion must match (SPARK RM 6.9(15)).
+               --  at the point of completion must match (SPARK RM 6.9(14)).
 
                Check_Ghost_Completion (Spec_Id, Body_Id);
             end if;
index 3369fad4aa8f55ed17ef835282a52f17d37e839e..644a0de8ad27c9c495e111a98cd2cd725b6e5d7d 100644 (file)
@@ -750,7 +750,7 @@ package body Sem_Ch7 is
          Set_Is_Ghost_Entity (Body_Id);
 
          --  The Ghost policy in effect at the point of declaration and at the
-         --  point of completion must match (SPARK RM 6.9(15)).
+         --  point of completion must match (SPARK RM 6.9(14)).
 
          Check_Ghost_Completion (Spec_Id, Body_Id);
       end if;
@@ -2527,12 +2527,6 @@ package body Sem_Ch7 is
       then
          return False;
 
-      --  A Ghost entity declared in a non-Ghost package does not force the
-      --  need for a body (SPARK RM 6.9(11)).
-
-      elsif not Is_Ghost_Entity (Pack_Id) and then Is_Ghost_Entity (Id) then
-         return False;
-
       --  Otherwise test to see if entity requires a completion. Note that
       --  subprogram entities whose declaration does not come from source are
       --  ignored here on the basis that we assume the expander will provide an
index c8c9f1f56dc78e4b0b0fbe66eb265ccc5478cf3b..c1c40bc59aa1a55345fffd0479063c0022771f17 100644 (file)
@@ -1344,11 +1344,13 @@ package body Sem_Ch8 is
 
       Set_Is_Volatile (Id, Is_Volatile_Object (Nam));
 
-      --  Also copy settings of Is_Atomic and Is_Independent
+      --  Also copy settings of Atomic/Independent/Volatile_Full_Access
 
       if Is_Entity_Name (Nam) then
-         Set_Is_Atomic      (Id, Is_Atomic      (Entity (Nam)));
-         Set_Is_Independent (Id, Is_Independent (Entity (Nam)));
+         Set_Is_Atomic                (Id, Is_Atomic      (Entity (Nam)));
+         Set_Is_Independent           (Id, Is_Independent (Entity (Nam)));
+         Set_Has_Volatile_Full_Access (Id,
+           Has_Volatile_Full_Access (Entity (Nam)));
       end if;
 
       --  Treat as volatile if we just set the Volatile flag
index 5ab6f50211399e95f742323a7fd5f3ee283ced67..391d546ae7840a5d66200772b270f9b4104c10fc 100644 (file)
@@ -5910,6 +5910,9 @@ package body Sem_Prag is
                Check_First_Subtype (Arg1);
             end if;
 
+            --  Attribute belongs on the base type. If the view of the type is
+            --  currently private, it also belongs on the underlying type.
+
             if Prag_Id = Pragma_Atomic
                  or else
                Prag_Id = Pragma_Shared
@@ -5917,31 +5920,26 @@ package body Sem_Prag is
                Prag_Id = Pragma_Volatile_Full_Access
             then
                Set_Atomic_Full (E);
-               Set_Atomic_Full (Underlying_Type (E));
                Set_Atomic_Full (Base_Type (E));
+               Set_Atomic_Full (Underlying_Type (E));
             end if;
 
             --  Atomic/Shared/Volatile_Full_Access imply Independent
 
             if Prag_Id /= Pragma_Volatile then
                Set_Is_Independent (E);
-               Set_Is_Independent (Underlying_Type (E));
                Set_Is_Independent (Base_Type (E));
+               Set_Is_Independent (Underlying_Type (E));
 
                if Prag_Id = Pragma_Independent then
                   Record_Independence_Check (N, Base_Type (E));
                end if;
             end if;
 
-            --  Attribute belongs on the base type. If the view of the type is
-            --  currently private, it also belongs on the underlying type.
+            --  Atomic/Shared/Volatile_Full_Access imply Volatile
 
             if Prag_Id /= Pragma_Independent then
-               if Prag_Id = Pragma_Volatile_Full_Access then
-                  Set_Has_Volatile_Full_Access (Base_Type (E));
-                  Set_Has_Volatile_Full_Access (Underlying_Type (E));
-               end if;
-
+               Set_Is_Volatile (E);
                Set_Is_Volatile (Base_Type (E));
                Set_Is_Volatile (Underlying_Type (E));
 
@@ -5994,8 +5992,8 @@ package body Sem_Prag is
                --  treated as atomic, thus incurring a potentially costly
                --  synchronization operation for every access.
 
-               --  For Volatile_Full_Access we can do this for elementary
-               --  types too, since there is no issue of atomic sync.
+               --  For Volatile_Full_Access we can do this for elementary types
+               --  too, since there is no issue of atomic synchronization.
 
                --  Of course it would be best if the back end could just adjust
                --  the alignment etc for the specific object, but that's not
@@ -6010,19 +6008,17 @@ package body Sem_Prag is
                  and then Sloc (Utyp) > No_Location
                  and then
                    Get_Source_File_Index (Sloc (E)) =
-                   Get_Source_File_Index (Sloc (Underlying_Type (Etype (E))))
+                                            Get_Source_File_Index (Sloc (Utyp))
                then
                   if Prag_Id = Pragma_Volatile_Full_Access then
-                     Set_Has_Volatile_Full_Access
-                       (Underlying_Type (Etype (E)));
+                     Set_Has_Volatile_Full_Access (Utyp);
                   else
-                     Set_Is_Atomic
-                       (Underlying_Type (Etype (E)));
+                     Set_Is_Atomic (Utyp);
                   end if;
                end if;
             end if;
 
-            --  Atomic/Shared imply both Independent and Volatile
+            --  Atomic/Shared/Volatile_Full_Access imply Independent
 
             if Prag_Id /= Pragma_Volatile then
                Set_Is_Independent (E);
@@ -6032,6 +6028,8 @@ package body Sem_Prag is
                end if;
             end if;
 
+            --  Atomic/Shared/Volatile_Full_Access imply Volatile
+
             if Prag_Id /= Pragma_Independent then
                Set_Is_Volatile (E);
                Set_Treat_As_Volatile (E);