[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Fri, 2 Sep 2011 06:51:46 +0000 (08:51 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 2 Sep 2011 06:51:46 +0000 (08:51 +0200)
2011-09-02  Vincent Celier  <celier@adacore.com>

* prj-nmsc.adb: (Find_Sources): When the list of sources is
explicitly declared in an extending project, do not warn if a source
for an inherited naming exception is not found.

2011-09-02  Gary Dismukes  <dismukes@adacore.com>

* exp_ch6.adb: (Is_Build_In_Place_Function_Call): Return False if
expansion is inactive.

2011-09-02  Ed Schonberg  <schonberg@adacore.com>

* sem_util.adb (Note_Possible_Modification): If the entity
being modified is the renaming generated for an Ada2012 iterator
element, the enclosing container or array is modified as well.

From-SVN: r178433

gcc/ada/ChangeLog
gcc/ada/exp_ch6.adb
gcc/ada/prj-nmsc.adb
gcc/ada/sem_util.adb

index 50355a7..f53ca65 100644 (file)
@@ -1,3 +1,20 @@
+2011-09-02  Vincent Celier  <celier@adacore.com>
+
+       * prj-nmsc.adb: (Find_Sources): When the list of sources is
+       explicitly declared in an extending project, do not warn if a source
+       for an inherited naming exception is not found.
+
+2011-09-02  Gary Dismukes  <dismukes@adacore.com>
+
+       * exp_ch6.adb: (Is_Build_In_Place_Function_Call): Return False if
+       expansion is inactive.
+
+2011-09-02  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_util.adb (Note_Possible_Modification): If the entity
+       being modified is the renaming generated for an Ada2012 iterator
+       element, the enclosing container or array is modified as well.
+
 2011-09-02  Jose Ruiz  <ruiz@adacore.com>
 
        * s-taprop-linux.adb (Initialize_Lock, Initialize_TCB,
index d1632db..7574642 100644 (file)
@@ -6779,6 +6779,18 @@ package body Exp_Ch6 is
       Function_Id : Entity_Id;
 
    begin
+      --  Return False when the expander is inactive, since awareness of
+      --  build-in-place treatment is only relevant during expansion. Note that
+      --  Is_Build_In_Place_Function, which is called as part of this function,
+      --  is also conditioned this way, but we need to check here as well to
+      --  avoid blowing up on processing protected calls when expansion is
+      --  disabled (such as with -gnatc) since those would trip over the raise
+      --  of Program_Error below.
+
+      if not Expander_Active then
+         return False;
+      end if;
+
       --  Step past qualification or unchecked conversion (the latter can occur
       --  in cases of calls to 'Input).
 
index 92ae785..bc35622 100644 (file)
@@ -6352,12 +6352,14 @@ package body Prj.Nmsc is
                            No_Name_Location);
                         Remove_Source (Data.Tree, Source, No_Source);
 
-                        Error_Msg_Name_1 := Name_Id (Source.File);
-                        Error_Msg
-                          (Data.Flags,
-                           "? unknown source file %%",
-                           NL.Location,
-                           Project.Project);
+                        if Source.Naming_Exception = Yes then
+                           Error_Msg_Name_1 := Name_Id (Source.File);
+                           Error_Msg
+                             (Data.Flags,
+                              "? unknown source file %%",
+                              NL.Location,
+                              Project.Project);
+                        end if;
 
                         Again := True;
                         exit Source_Loop;
index fbc72a8..cdc37c0 100644 (file)
@@ -10711,6 +10711,18 @@ package body Sem_Util is
                then
                   Exp := Renamed_Object (Ent);
                   goto Continue;
+
+               --  The expression may be the renaming of a subcomponent of an
+               --  array or container. The assignment to the subcomponent is
+               --  a modification of the container.
+
+               elsif Comes_From_Source (Original_Node (Exp))
+                 and then
+                   Nkind_In (Original_Node (Exp),
+                     N_Selected_Component, N_Indexed_Component)
+               then
+                  Exp := Prefix (Original_Node (Exp));
+                  goto Continue;
                end if;
 
                --  Generate a reference only if the assignment comes from