2009-04-10 Vincent Celier <celier@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 10 Apr 2009 10:35:01 +0000 (10:35 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 10 Apr 2009 10:35:01 +0000 (10:35 +0000)
* prj-nmsc.adb (Check_Naming_Schemes): Initialize local variable Casing
to avoid gcc warning.

2009-04-10  Robert Dewar  <dewar@adacore.com>

* g-comlin.adb: Add ??? comment

2009-04-10  Ed Schonberg  <schonberg@adacore.com>

* sem_warn.adb (Check_Unused_Withs): Do not emit message about
unreferenced entities for a package with no visible declarations.

2009-04-10  Robert Dewar  <dewar@adacore.com>

* exp_ch9.adb: Minor reformatting

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145886 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/exp_ch9.adb
gcc/ada/g-comlin.adb
gcc/ada/prj-nmsc.adb
gcc/ada/sem_warn.adb

index afdf19d..0da0147 100644 (file)
@@ -1,3 +1,21 @@
+2009-04-10  Vincent Celier  <celier@adacore.com>
+
+       * prj-nmsc.adb (Check_Naming_Schemes): Initialize local variable Casing
+       to avoid gcc warning.
+
+2009-04-10  Robert Dewar  <dewar@adacore.com>
+
+       * g-comlin.adb: Add ??? comment
+
+2009-04-10  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_warn.adb (Check_Unused_Withs): Do not emit message about
+       unreferenced entities for a package with no visible declarations.
+
+2009-04-10  Robert Dewar  <dewar@adacore.com>
+
+       * exp_ch9.adb: Minor reformatting
+
 2009-04-10  Thomas Quinot  <quinot@adacore.com>
 
        * sem_prag.adb: Minor reformatting
index 8ff47dc..75603f0 100644 (file)
@@ -738,22 +738,25 @@ package body Exp_Ch9 is
       --  At the end of the statement sequence, Complete_Rendezvous is called.
       --  A label skipping the Complete_Rendezvous, and all other accept
       --  processing, has already been added for the expansion of requeue
-      --  statements.
+      --  statements. The Sloc is copied from the last statement since it
+      --  is really part of this last statement.
 
-      Call := Build_Runtime_Call (Sloc (Last (Statements (Stats))),
-                                  RE_Complete_Rendezvous);
+      Call :=
+        Build_Runtime_Call
+          (Sloc (Last (Statements (Stats))), RE_Complete_Rendezvous);
       Insert_Before (Last (Statements (Stats)), Call);
       Analyze (Call);
 
       --  If exception handlers are present, then append Complete_Rendezvous
-      --  calls to the handlers, and construct the required outer block.
+      --  calls to the handlers, and construct the required outer block. As
+      --  above, the Sloc is copied from the last statement in the sequence.
 
       if Present (Exception_Handlers (Stats)) then
          Hand := First (Exception_Handlers (Stats));
-
          while Present (Hand) loop
-            Call := Build_Runtime_Call (Sloc (Last (Statements (Hand))),
-                                        RE_Complete_Rendezvous);
+            Call :=
+              Build_Runtime_Call
+                (Sloc (Last (Statements (Hand))), RE_Complete_Rendezvous);
             Append (Call, Statements (Hand));
             Analyze (Call);
             Next (Hand);
@@ -11996,11 +11999,11 @@ package body Exp_Ch9 is
          --  side effects.
 
          Append_To (Args,
-           New_Copy_Tree (
-             Expression (First (
-               Pragma_Argument_Associations (
-                 Find_Task_Or_Protected_Pragma
-                   (Tdef, Name_Task_Name))))));
+           New_Copy_Tree
+             (Expression (First
+                           (Pragma_Argument_Associations
+                             (Find_Task_Or_Protected_Pragma
+                               (Tdef, Name_Task_Name))))));
 
       else
          Append_To (Args, Make_Identifier (Loc, Name_uTask_Name));
index fb1cae0..adb1553 100644 (file)
@@ -92,8 +92,9 @@ package body GNAT.Command_Line is
       Index_In_Switches : out Integer;
       Switch_Length     : out Integer;
       Param             : out Switch_Parameter_Type);
-   --  return the Longest switch from Switches that matches at least
-   --  partially Arg. Index_In_Switches is set to 0 if none matches
+   --  Return the Longest switch from Switches that at least partially
+   --  partially Arg. Index_In_Switches is set to 0 if none matches.
+   --  What are other parameters??? in particular Param is not always set???
 
    procedure Unchecked_Free is new Ada.Unchecked_Deallocation
      (Argument_List, Argument_List_Access);
index 3d67371..7d53289 100644 (file)
@@ -3280,7 +3280,7 @@ package body Prj.Nmsc is
             --  value in the language config.
 
             declare
-               Dot_Repl        : constant  Variable_Value :=
+               Dot_Repl        : constant Variable_Value :=
                                    Util.Value_Of
                                      (Name_Dot_Replacement,
                                       Naming.Decl.Attributes, In_Tree);
@@ -3291,17 +3291,21 @@ package body Prj.Nmsc is
                                    (Name_Casing,
                                     Naming.Decl.Attributes,
                                     In_Tree);
-               Casing          : Casing_Type;
-               Casing_Defined  : Boolean := False;
+
+               Casing : Casing_Type := All_Lower_Case;
+               --  Casing type (junk initialization to stop bad gcc warning)
+
+               Casing_Defined : Boolean := False;
 
                Sep_Suffix : constant Variable_Value :=
                               Prj.Util.Value_Of
                                 (Variable_Name => Name_Separate_Suffix,
                                  In_Variables  => Naming.Decl.Attributes,
                                  In_Tree       => In_Tree);
+
                Separate_Suffix : File_Name_Type := No_File;
+               Lang_Id         : Language_Index;
 
-               Lang_Id : Language_Index;
             begin
                --  Check attribute Dot_Replacement
 
index 1061174..076355b 100644 (file)
@@ -1887,6 +1887,11 @@ package body Sem_Warn is
          --  warn that the context clause could be moved to the body, because
          --  the renaming may be intended to re-export the unit.
 
+         function Has_Visible_Entities (P : Entity_Id) return Boolean;
+         --  If a package has no declared entities, inhibit warning because
+         --  there is nothing to be referenced. The package may be in the
+         --  context just in order to carry a linker pragma for example.
+
          -------------------------
          -- Check_Inner_Package --
          -------------------------
@@ -2011,6 +2016,47 @@ package body Sem_Warn is
             return Empty;
          end Find_Package_Renaming;
 
+         --------------------------
+         -- Has_Visible_Entities --
+         --------------------------
+
+         function Has_Visible_Entities (P : Entity_Id) return Boolean is
+            E : Entity_Id;
+
+         begin
+
+            --  If unit in context is not a package, it is a subprogram that
+            --  is not called or a generic unit that is not instantiated
+            --  in the current unit, and warning is appropriate.
+
+            if Ekind (P) /= E_Package then
+               return True;
+            end if;
+
+            --  If unit comes from a limited_with clause, look for declaration
+            --  of shadow entities.
+
+            if Present (Limited_View (P)) then
+               E := First_Entity (Limited_View (P));
+            else
+               E := First_Entity (P);
+            end if;
+
+            while Present (E)
+              and then E /= First_Private_Entity (P)
+            loop
+               if Comes_From_Source (E)
+                 or else Present (Limited_View (P))
+               then
+                  return True;
+               end if;
+
+               Next_Entity (E);
+            end loop;
+
+            return False;
+         end Has_Visible_Entities;
+
       --  Start of processing for Check_One_Unit
 
       begin
@@ -2066,7 +2112,7 @@ package body Sem_Warn is
 
                      --  Otherwise simple unreferenced message
 
-                     else
+                     elsif Has_Visible_Entities (Entity (Name (Item))) then
                         Error_Msg_N
                           ("?unit& is not referenced!", Name (Item));
                      end if;