]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Thu, 1 Sep 2011 13:21:23 +0000 (15:21 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 1 Sep 2011 13:21:23 +0000 (15:21 +0200)
2011-09-01  Robert Dewar  <dewar@adacore.com>

* prj-proc.adb, exp_ch6.adb, prj-env.adb: Minor reformatting.

2011-09-01  Bob Duff  <duff@adacore.com>

* sem_aggr.adb (Resolve_Aggregate): Need to treat "in instance
body" the same as "in inlined body", because visibility shouldn't
apply there.

2011-09-01  Eric Botcazou  <ebotcazou@adacore.com>

* inline.adb (Add_Inlined_Body): Refine previous change.

From-SVN: r178412

gcc/ada/ChangeLog
gcc/ada/exp_ch6.adb
gcc/ada/inline.adb
gcc/ada/prj-env.adb
gcc/ada/prj-proc.adb
gcc/ada/sem_aggr.adb

index 83cf332fde56a7c6328ee80b7562148b860343f8..7e70cf788ab153d5348dbc5d3f762ad8f604f944 100644 (file)
@@ -1,3 +1,17 @@
+2011-09-01  Robert Dewar  <dewar@adacore.com>
+
+       * prj-proc.adb, exp_ch6.adb, prj-env.adb: Minor reformatting.
+
+2011-09-01  Bob Duff  <duff@adacore.com>
+
+       * sem_aggr.adb (Resolve_Aggregate): Need to treat "in instance
+       body" the same as "in inlined body", because visibility shouldn't
+       apply there.
+
+2011-09-01  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * inline.adb (Add_Inlined_Body): Refine previous change.
+
 2011-09-01  Gary Dismukes  <dismukes@adacore.com>
 
        * exp_ch6.ads (Needs_BIP_Alloc_Form): New utility function.
index eb74c122847bba12584b9b2164b7beb1f6a88fa5..b156a4f0934eac74e5d9310fb703105e9ef91d6b 100644 (file)
@@ -7845,7 +7845,6 @@ package body Exp_Ch6 is
    function Needs_BIP_Alloc_Form (Func_Id : Entity_Id) return Boolean is
       pragma Assert (Is_Build_In_Place_Function (Func_Id));
       Func_Typ : constant Entity_Id := Underlying_Type (Etype (Func_Id));
-
    begin
       return not Is_Constrained (Func_Typ) or else Is_Tagged_Type (Func_Typ);
    end Needs_BIP_Alloc_Form;
index 53369eaf36538d685c8308db36d077af87894d8a..98bbbf09531f080c4358fa3bd211d3f02dc1971f 100644 (file)
@@ -342,11 +342,12 @@ package body Inline is
                   null;
 
                --  Do not inline the package if the subprogram is an init. proc
-               --  because in that case the body appears in the same unit that
-               --  declares the type, which will be compiled in any case.
+               --  or other internally generated subprogram, because in that
+               --  case the subprogram body appears in the same unit that
+               --  declares the type, and that body is visible to the back end.
 
                elsif not Is_Inlined (Pack)
-                 and then not Is_Init_Proc (E)
+                 and then Comes_From_Source (E)
                then
                   Set_Is_Inlined (Pack);
                   Inlined_Bodies.Increment_Last;
index 68965ab3156795a3eba85450e11022ba4e29b015..6dcee667cc14bdeccba2d53a08fe12c2aeaff3d1 100644 (file)
@@ -836,19 +836,18 @@ package body Prj.Env is
                   or else Source.Unit /= No_Unit_Index)
             then
                if Source.Unit /= No_Unit_Index then
+
                   --  Put the encoded unit name in the name buffer
 
                   declare
                      Uname : constant String :=
-                       Get_Name_String (Source.Unit.Name);
+                               Get_Name_String (Source.Unit.Name);
 
                   begin
                      Name_Len := 0;
-
                      for J in Uname'Range loop
                         if Uname (J) in Upper_Half_Character then
                            Store_Encoded_Character (Get_Char_Code (Uname (J)));
-
                         else
                            Add_Char_To_Name_Buffer (Uname (J));
                         end if;
@@ -879,8 +878,7 @@ package body Prj.Env is
                      end case;
 
                      if Suffix /= No_File then
-                        Add_Str_To_Name_Buffer
-                          (Get_Name_String (Suffix));
+                        Add_Str_To_Name_Buffer (Get_Name_String (Suffix));
                      end if;
                   end if;
 
@@ -907,6 +905,8 @@ package body Prj.Env is
       procedure For_Every_Imported_Project is new
         For_Every_Project_Imported (State => Integer, Action => Process);
 
+      --  Local variables
+
       Dummy : Integer := 0;
 
    --  Start of processing for Create_Mapping_File
index 251b86d7661948d6d0c039a230397391ce275feb..b5869b2047d86b24c83a6dd484a82836875d8a6d 100644 (file)
@@ -2765,6 +2765,7 @@ package body Prj.Proc is
             Project := Processed_Projects.Get (Name);
 
             if Project /= No_Project then
+
                --  Make sure that, when a project is extended, the project id
                --  of the project extending it is recorded in its data, even
                --  when it has already been processed as an imported project.
@@ -2777,13 +2778,16 @@ package body Prj.Proc is
                return;
             end if;
 
-            Project := new Project_Data'
-              (Empty_Project
-                 (Project_Qualifier_Of
+            Project :=
+              new Project_Data'
+                (Empty_Project
+                  (Project_Qualifier_Of
                     (From_Project_Node, From_Project_Node_Tree)));
-            In_Tree.Projects := new Project_List_Element'
-              (Project => Project,
-               Next    => In_Tree.Projects);
+
+            In_Tree.Projects :=
+              new Project_List_Element'
+                    (Project => Project,
+                     Next    => In_Tree.Projects);
 
             Processed_Projects.Set (Name, Project);
 
@@ -2833,10 +2837,12 @@ package body Prj.Proc is
               and then In_Tree.Is_Root_Tree
             then
                Initialize_And_Copy (Child_Env, Copy_From => Env);
+
             else
                --  No need to initialize Child_Env, since it will not be
                --  used anyway by Process_Declarative_Items (only the root
                --  aggregate can modify it, and it is never read anyway).
+
                null;
             end if;
 
index d4ea223c7b872b2dfd600312e95736f1c0fc58eb..cdfaedeaa56bcd0c34e6bf0d4261a2ea60a36073 100644 (file)
@@ -1229,7 +1229,7 @@ package body Sem_Aggr is
 
       elsif Is_Private_Type (Typ)
         and then Present (Full_View (Typ))
-        and then In_Inlined_Body
+        and then (In_Inlined_Body or else In_Instance_Body)
         and then Is_Composite_Type (Full_View (Typ))
       then
          Resolve (N, Full_View (Typ));