[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Mon, 18 Oct 2010 09:46:31 +0000 (11:46 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 18 Oct 2010 09:46:31 +0000 (11:46 +0200)
2010-10-18  Javier Miranda  <miranda@adacore.com>

* exp_util.adb (Side_Effect_Free): Code clean up.

2010-10-18  Ed Schonberg  <schonberg@adacore.com>

* sem_ch8.adb (Is_Primitive_Operator_In_Use): Renamed from
Is_Primitive_Operator. When ending the scope of a use package scope, a
primitive operator remains in use if the base type has a current use
(type) clause.

2010-10-18  Javier Miranda  <miranda@adacore.com>

* einfo.ads (Is_Dynamic_Support): Add missing support for limited
private types whose full-view is a task type.
* sem_util.adb (Enclosing_Subprogram): Add missing support for limited
private types whose full-view is a task type.
* exp_ch7.adb (Find_Final_List): Minor code cleanup replacing code by
function Nearest_Dynamic_Scope which provides the needed functionality.

2010-10-18  Arnaud Charlet  <charlet@adacore.com>

* sem_prag.adb (Set_Exported): Do not generate error when exporting a
variable with an address clause in codepeer mode.

From-SVN: r165614

gcc/ada/ChangeLog
gcc/ada/einfo.adb
gcc/ada/exp_ch7.adb
gcc/ada/exp_util.adb
gcc/ada/sem_ch8.adb
gcc/ada/sem_prag.adb
gcc/ada/sem_util.adb

index 256483c3e7715375a99c599191f814b54f0d785b..251ac572e275d69c72f6475a7dfc706b9e2c8ab0 100644 (file)
@@ -1,3 +1,28 @@
+2010-10-18  Javier Miranda  <miranda@adacore.com>
+
+       * exp_util.adb (Side_Effect_Free): Code clean up.
+
+2010-10-18  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch8.adb (Is_Primitive_Operator_In_Use): Renamed from
+       Is_Primitive_Operator. When ending the scope of a use package scope, a
+       primitive operator remains in use if the base type has a current use
+       (type) clause.
+
+2010-10-18  Javier Miranda  <miranda@adacore.com>
+
+       * einfo.ads (Is_Dynamic_Support): Add missing support for limited
+       private types whose full-view is a task type.
+       * sem_util.adb (Enclosing_Subprogram): Add missing support for limited
+       private types whose full-view is a task type.
+       * exp_ch7.adb (Find_Final_List): Minor code cleanup replacing code by
+       function Nearest_Dynamic_Scope which provides the needed functionality.
+
+2010-10-18  Arnaud Charlet  <charlet@adacore.com>
+
+       * sem_prag.adb (Set_Exported): Do not generate error when exporting a
+       variable with an address clause in codepeer mode.
+
 2010-10-18  Robert Dewar  <dewar@adacore.com>
 
        * g-trasym-vms-ia64.adb: Minor reformatting.
index 3c0314b3db5527e5993debba9e8a8698c1ab710b..6782c5b2d95cfb74d5514cdfb939ae4ff42c44a4 100644 (file)
@@ -6130,6 +6130,10 @@ package body Einfo is
           or else
         Ekind (Id) = E_Task_Type
           or else
+       (Ekind (Id) = E_Limited_Private_Type
+         and then Present (Full_View (Id))
+         and then Ekind (Full_View (Id)) = E_Task_Type)
+          or else
         Ekind (Id) = E_Entry
           or else
         Ekind (Id) = E_Entry_Family
index 2b7d901789b19bba73059e5adf8b51036642d672..27f4b5004a7b645ac45e02e7c8554040c8e999fd 100644 (file)
@@ -1739,11 +1739,7 @@ package body Exp_Ch7 is
          end if;
 
       else
-         if Is_Dynamic_Scope (E) then
-            S := E;
-         else
-            S := Enclosing_Dynamic_Scope (E);
-         end if;
+         S := Nearest_Dynamic_Scope (E);
 
          --  When the finalization chain entity is 'Error', it means that there
          --  should not be any chain at that level and that the enclosing one
index 6624802a15041a6e8d0edcc92af91c652d795700..77ad7a009fa776124ff83bf8500af6e6190d1174 100644 (file)
@@ -4655,8 +4655,8 @@ package body Exp_Util is
 
          elsif VM_Target /= No_VM
             and then not Comes_From_Source (N)
-            and then Is_Class_Wide_Type (Etype (N))
             and then Nkind (Parent (N)) = N_Object_Renaming_Declaration
+            and then Is_Class_Wide_Type (Etype (N))
          then
             return True;
          end if;
index 8404e95472c3675ee17032c920e3a00ffeeaa872..d45ebda071db6c29875a0f7ab9b9c7f1ca81655a 100644 (file)
@@ -3361,24 +3361,25 @@ package body Sem_Ch8 is
       Id        : Entity_Id;
       Elmt      : Elmt_Id;
 
-      function Is_Primitive_Operator
+      function Is_Primitive_Operator_In_Use
         (Op : Entity_Id;
          F  : Entity_Id) return Boolean;
       --  Check whether Op is a primitive operator of a use-visible type
 
-      ---------------------------
-      -- Is_Primitive_Operator --
-      ---------------------------
+      ----------------------------------
+      -- Is_Primitive_Operator_In_Use --
+      ----------------------------------
 
-      function Is_Primitive_Operator
+      function Is_Primitive_Operator_In_Use
         (Op : Entity_Id;
          F  : Entity_Id) return Boolean
       is
          T : constant Entity_Id := Etype (F);
       begin
-         return In_Use (T)
+         return (In_Use (T)
+                  or else Present (Current_Use_Clause (Base_Type (T))))
            and then Scope (T) = Scope (Op);
-      end Is_Primitive_Operator;
+      end Is_Primitive_Operator_In_Use;
 
    --  Start of processing for End_Use_Package
 
@@ -3409,11 +3410,12 @@ package body Sem_Ch8 is
 
                   if Nkind (Id) = N_Defining_Operator_Symbol
                        and then
-                         (Is_Primitive_Operator (Id, First_Formal (Id))
+                         (Is_Primitive_Operator_In_Use
+                           (Id, First_Formal (Id))
                             or else
                           (Present (Next_Formal (First_Formal (Id)))
                              and then
-                               Is_Primitive_Operator
+                               Is_Primitive_Operator_In_Use
                                  (Id, Next_Formal (First_Formal (Id)))))
                   then
                      null;
index 516ebc9416f73d51ab82fc9b7ec1b349dba46f5b..443aa92368f172eef42f28d6f3c8b4bb6932d7d4 100644 (file)
@@ -4986,7 +4986,7 @@ package body Sem_Prag is
             Error_Pragma_Arg
               ("cannot export entity& that was previously imported", Arg);
 
-         elsif Present (Address_Clause (E)) then
+         elsif Present (Address_Clause (E)) and then not CodePeer_Mode then
             Error_Pragma_Arg
               ("cannot export entity& that has an address clause", Arg);
          end if;
index ff7c4d7888cd380301d383aed3db834c9f7bd2e9..461f5099627f058296bc0392d1f52ae8f84c8d1f 100644 (file)
@@ -2715,6 +2715,12 @@ package body Sem_Util is
       elsif Ekind (Dynamic_Scope) = E_Task_Type then
          return Get_Task_Body_Procedure (Dynamic_Scope);
 
+      elsif Ekind (Dynamic_Scope) = E_Limited_Private_Type
+        and then Present (Full_View (Dynamic_Scope))
+        and then Ekind (Full_View (Dynamic_Scope)) = E_Task_Type
+      then
+         return Get_Task_Body_Procedure (Full_View (Dynamic_Scope));
+
       --  No body is generated if the protected operation is eliminated
 
       elsif Convention (Dynamic_Scope) = Convention_Protected