summaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2010-06-22 08:47:22 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2010-06-22 08:47:22 +0200
commit47edeeab0f1802db436a50ff241b2f30200add54 (patch)
tree1cd8c0f73bacd28f7da6592854ffd98057e0c9ee /gcc/ada
parent6d812dd3582299f030ec940c3c513c0653a1a49f (diff)
downloadgcc-47edeeab0f1802db436a50ff241b2f30200add54.tar.gz
[multiple changes]
2010-06-22 Vincent Celier <celier@adacore.com> * prj-nmsc.adb (Find_Sources): When a source from a multi-unit file is found, check if it's path has aready been found, whatever its index. 2010-06-22 Robert Dewar <dewar@adacore.com> * atree.adb, gnatbind.adb: Minor reformatting. Minor code reorganization. From-SVN: r161131
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog10
-rw-r--r--gcc/ada/atree.adb10
-rw-r--r--gcc/ada/gnatbind.adb9
-rw-r--r--gcc/ada/prj-nmsc.adb42
4 files changed, 47 insertions, 24 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 317195a3bfb..a58cf0d6ae5 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,13 @@
+2010-06-22 Vincent Celier <celier@adacore.com>
+
+ * prj-nmsc.adb (Find_Sources): When a source from a multi-unit file is
+ found, check if it's path has aready been found, whatever its index.
+
+2010-06-22 Robert Dewar <dewar@adacore.com>
+
+ * atree.adb, gnatbind.adb: Minor reformatting.
+ Minor code reorganization.
+
2010-06-21 Robert Dewar <dewar@adacore.com>
* exp_ch4.adb (Expand_N_Conditional_Expression): Fold if condition
diff --git a/gcc/ada/atree.adb b/gcc/ada/atree.adb
index 6f1fc55111f..8bf09cb866c 100644
--- a/gcc/ada/atree.adb
+++ b/gcc/ada/atree.adb
@@ -63,15 +63,15 @@ package body Atree is
-- Either way, gnat1 will stop when node 12345 is created
- -- The second method is faster
+ -- The second method is much faster
- -- Similarly, rr and rrd allow breaking on rewriting of a given node.
+ -- Similarly, rr and rrd allow breaking on rewriting of a given node
ww : Node_Id'Base := Node_Id'First - 1;
pragma Export (Ada, ww); -- trick the optimizer
Watch_Node : Node_Id'Base renames ww;
- -- Node to "watch"; that is, whenever a node is created, we check if it is
- -- equal to Watch_Node, and if so, call New_Node_Breakpoint. You have
+ -- Node to "watch"; that is, whenever a node is created, we check if it
+ -- is equal to Watch_Node, and if so, call New_Node_Breakpoint. You have
-- presumably set a breakpoint on New_Node_Breakpoint. Note that the
-- initial value of Node_Id'First - 1 ensures that by default, no node
-- will be equal to Watch_Node.
@@ -108,7 +108,7 @@ package body Atree is
-- calls Rewrite_Breakpoint. Otherwise, does nothing.
procedure Node_Debug_Output (Op : String; N : Node_Id);
- -- Common code for nnd and rrd. Write Op followed by information about N.
+ -- Common code for nnd and rrd, writes Op followed by information about N
-----------------------------
-- Local Objects and Types --
diff --git a/gcc/ada/gnatbind.adb b/gcc/ada/gnatbind.adb
index cc06ce39706..9d7ac41b32f 100644
--- a/gcc/ada/gnatbind.adb
+++ b/gcc/ada/gnatbind.adb
@@ -826,7 +826,7 @@ begin
-- sources) if -R was used.
if List_Closure then
- declare
+ List_Closure_Display : declare
Source : File_Name_Type;
function Put_In_Sources (S : File_Name_Type) return Boolean;
@@ -852,6 +852,8 @@ begin
return True;
end Put_In_Sources;
+ -- Start of processing for List_Closure_Display
+
begin
Closure_Sources.Init;
@@ -862,7 +864,6 @@ begin
end if;
for J in reverse Elab_Order.First .. Elab_Order.Last loop
-
Source := Units.Table (Elab_Order.Table (J)).Sfile;
-- Do not include the sources of the runtime and do not
@@ -875,7 +876,7 @@ begin
Write_Str (" ");
end if;
- Write_Str (Get_Name_String (Source));
+ Write_Str (Get_Name_String (Source));
Write_Eol;
end if;
end loop;
@@ -908,7 +909,7 @@ begin
if not Zero_Formatting then
Write_Eol;
end if;
- end;
+ end List_Closure_Display;
end if;
end if;
end if;
diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb
index 7932486ed7a..498a01eb9fa 100644
--- a/gcc/ada/prj-nmsc.adb
+++ b/gcc/ada/prj-nmsc.adb
@@ -57,8 +57,14 @@ package body Prj.Nmsc is
Listed : Boolean := False;
Found : Boolean := False;
end record;
+
No_Name_Location : constant Name_Location :=
- (No_File, No_Location, No_Source, False, False);
+ (Name => No_File,
+ Location => No_Location,
+ Source => No_Source,
+ Listed => False,
+ Found => False);
+
package Source_Names_Htable is new GNAT.Dynamic_HTables.Simple_HTable
(Header_Num => Header_Num,
Element => Name_Location,
@@ -66,11 +72,10 @@ package body Prj.Nmsc is
Key => File_Name_Type,
Hash => Hash,
Equal => "=");
- -- Information about file names found in string list attribute
- -- (Source_Files or Source_List_File).
- -- Except is set to True if source is a naming exception in the project.
- -- This is used to check that all referenced files were indeed found on the
- -- disk.
+ -- File name information found in string list attribute (Source_Files or
+ -- Source_List_File). Except is set to True if source is a naming exception
+ -- in the project. Used to check that all referenced files were indeed
+ -- found on the disk.
type Unit_Exception is record
Name : Name_Id; -- ??? duplicates the key
@@ -6405,6 +6410,8 @@ package body Prj.Nmsc is
declare
Source : Source_Id;
Iter : Source_Iterator;
+ Found : Boolean := False;
+ Path : Path_Information;
begin
Iter := For_Each_Source (Data.Tree, Project.Project);
@@ -6416,16 +6423,22 @@ package body Prj.Nmsc is
and then Source.Path = No_Path_Information
then
if Source.Unit /= No_Unit_Index then
+ Found := False;
-- For multi-unit source files, source_id gets duplicated
-- once for every unit. Only the first source_id got its
- -- full path set. So if it isn't set for that first one,
- -- the file wasn't found. Otherwise we need to update for
- -- units after the first one.
+ -- full path set.
- if Source.Index = 0
- or else Source.Index = 1
- then
+ if Source.Index /= 0 then
+ Path := Files_Htable.Get
+ (Data.File_To_Source, Source.File).Path;
+
+ if Path /= No_Path_Information then
+ Found := True;
+ end if;
+ end if;
+
+ if not Found then
Error_Msg_Name_1 := Name_Id (Source.Display_File);
Error_Msg_Name_2 := Name_Id (Source.Unit.Name);
Error_Msg
@@ -6434,8 +6447,7 @@ package body Prj.Nmsc is
No_Location, Project.Project);
else
- Source.Path := Files_Htable.Get
- (Data.File_To_Source, Source.File).Path;
+ Source.Path := Path;
if Current_Verbosity = High then
if Source.Path /= No_Path_Information then
@@ -6443,7 +6455,7 @@ package body Prj.Nmsc is
& Get_Name_String (Source.File)
& " at" & Source.Index'Img
& " to "
- & Get_Name_String (Source.Path.Name));
+ & Get_Name_String (Path.Name));
end if;
end if;
end if;