aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2009-04-08 15:29:19 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2009-04-08 15:29:19 +0200
commit812f574fdafe3d4a09ac60964b8eeb36cb430837 (patch)
treef98b2556e2aecc2d4afb32dd2119d0c3050ec74c
parent020e3d027a081053ec8dee92d1ea45b966a312d8 (diff)
downloadgcc-812f574fdafe3d4a09ac60964b8eeb36cb430837.zip
gcc-812f574fdafe3d4a09ac60964b8eeb36cb430837.tar.gz
gcc-812f574fdafe3d4a09ac60964b8eeb36cb430837.tar.bz2
[multiple changes]
2009-04-08 Tristan Gingold <gingold@adacore.com> * sem_prag.adb: Restrict pragma Thread_Local_Storage to library level variables. Set Has_Gigi_Rep_Item flag to TLS variables (to ease gigi work). 2009-04-08 Vincent Celier <celier@adacore.com> * prj-nmsc.adb: (Add_Source): Add the mapping of the unit name to source file name in the Unit_Sources_HT hash table, if the unit name is not null. * prj.adb (Reset): Reset hash table Tree.Unit_Sources_HT * prj.ads (Unit_Sources_Htable): New hash table instantiation (Project_Tree_Data): New component Unit_Sources_HT From-SVN: r145728
-rw-r--r--gcc/ada/ChangeLog17
-rw-r--r--gcc/ada/prj-nmsc.adb63
-rw-r--r--gcc/ada/prj.adb1
-rw-r--r--gcc/ada/prj.ads11
-rw-r--r--gcc/ada/sem_prag.adb3
5 files changed, 64 insertions, 31 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 3d66123..940337e 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,20 @@
+2009-04-08 Tristan Gingold <gingold@adacore.com>
+
+ * sem_prag.adb: Restrict pragma Thread_Local_Storage to library level
+ variables.
+ Set Has_Gigi_Rep_Item flag to TLS variables (to ease gigi work).
+
+2009-04-08 Vincent Celier <celier@adacore.com>
+
+ * prj-nmsc.adb:
+ (Add_Source): Add the mapping of the unit name to source file name in
+ the Unit_Sources_HT hash table, if the unit name is not null.
+
+ * prj.adb (Reset): Reset hash table Tree.Unit_Sources_HT
+
+ * prj.ads (Unit_Sources_Htable): New hash table instantiation
+ (Project_Tree_Data): New component Unit_Sources_HT
+
2009-04-08 Thomas Quinot <quinot@adacore.com>
* sem_ch8.adb: Minor reformatting.
diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb
index c00a69a..3c2d5d8 100644
--- a/gcc/ada/prj-nmsc.adb
+++ b/gcc/ada/prj-nmsc.adb
@@ -656,6 +656,13 @@ package body Prj.Nmsc is
Source_Paths_Htable.Set (In_Tree.Source_Paths_HT, Path, Id);
end if;
+ -- Add the source id to the Unit_Sources_HT hash table, if the unit name
+ -- is not null.
+
+ if Unit /= No_Name then
+ Unit_Sources_Htable.Set (In_Tree.Unit_Sources_HT, Unit, Id);
+ end if;
+
-- Add the source to the global list
Src_Data.Next_In_Sources := In_Tree.First_Source;
@@ -806,8 +813,9 @@ package body Prj.Nmsc is
Source := Data.First_Source;
Source_Loop : while Source /= No_Source loop
declare
- Src_Data : Source_Data renames
- In_Tree.Sources.Table (Source);
+ Src_Data : Source_Data renames
+ In_Tree.Sources.Table (Source);
+
begin
exit Source_Loop when Src_Data.Language = Language;
@@ -2513,7 +2521,7 @@ package body Prj.Nmsc is
while Source /= No_Source loop
declare
Src_Data : Source_Data renames
- In_Tree.Sources.Table (Source);
+ In_Tree.Sources.Table (Source);
begin
Src_Data.In_Interfaces := False;
Source := Src_Data.Next_In_Project;
@@ -2542,7 +2550,8 @@ package body Prj.Nmsc is
while Source /= No_Source loop
declare
Src_Data : Source_Data renames
- In_Tree.Sources.Table (Source);
+ In_Tree.Sources.Table (Source);
+
begin
if Src_Data.File = Name then
if not Src_Data.Locally_Removed then
@@ -2604,7 +2613,8 @@ package body Prj.Nmsc is
while Source /= No_Source loop
declare
Src_Data : Source_Data renames
- In_Tree.Sources.Table (Source);
+ In_Tree.Sources.Table (Source);
+
begin
if not Src_Data.Declared_In_Interfaces then
Src_Data.In_Interfaces := False;
@@ -2634,8 +2644,10 @@ package body Prj.Nmsc is
-- Check that a list of unit names contains only valid names
procedure Get_Exceptions (Kind : Source_Kind);
+ -- Comment required ???
procedure Get_Unit_Exceptions (Kind : Source_Kind);
+ -- Comment required ???
----------------------
-- Check_Unit_Names --
@@ -3553,12 +3565,10 @@ package body Prj.Nmsc is
Src_Id := Proj_Data.First_Source;
while Src_Id /= No_Source loop
declare
- Src : Source_Data renames
- In_Tree.Sources.Table (Src_Id);
+ Src : Source_Data renames In_Tree.Sources.Table (Src_Id);
begin
exit when Src.Lang_Kind /= File_Based
or else Src.Kind /= Spec;
-
Src_Id := Src.Next_In_Project;
end;
end loop;
@@ -7394,16 +7404,16 @@ package body Prj.Nmsc is
-- For other language, the source is simply removed.
declare
- Source : Source_Id;
+ Source : Source_Id;
begin
Source := Data.First_Source;
while Source /= No_Source loop
declare
Src_Data : Source_Data renames
- In_Tree.Sources.Table (Source);
- begin
+ In_Tree.Sources.Table (Source);
+ begin
if Src_Data.Naming_Exception
and then Src_Data.Path = No_Path_Information
then
@@ -8145,15 +8155,15 @@ package body Prj.Nmsc is
while Source /= No_Source loop
declare
Src_Data : Source_Data renames
- In_Tree.Sources.Table (Source);
+ In_Tree.Sources.Table (Source);
begin
if Unit /= No_Name
and then Src_Data.Unit = Unit
and then
((Src_Data.Kind = Spec and then Kind = Impl)
- or else
- (Src_Data.Kind = Impl and then Kind = Spec))
+ or else
+ (Src_Data.Kind = Impl and then Kind = Spec))
then
Other_Part := Source;
@@ -8481,12 +8491,10 @@ package body Prj.Nmsc is
Source := Data.First_Source;
while Source /= No_Source loop
declare
- Src_Data : Source_Data renames
- In_Tree.Sources.Table (Source);
+ Src_Data : Source_Data renames In_Tree.Sources.Table (Source);
begin
- -- A file that is excluded cannot also be an exception file
- -- name
+ -- An excluded file cannot also be an exception file name
if Excluded_Sources_Htable.Get (Src_Data.File) /=
No_File_Found
@@ -8514,13 +8522,12 @@ package body Prj.Nmsc is
Source_Names.Set (K => Src_Data.File, E => Name_Loc);
- -- If this is an Ada exception, record it in table
- -- Unit_Exceptions
+ -- If this is an Ada exception, record in table Unit_Exceptions
if Src_Data.Unit /= No_Name then
declare
Unit_Except : Unit_Exception :=
- Unit_Exceptions.Get (Src_Data.Unit);
+ Unit_Exceptions.Get (Src_Data.Unit);
begin
Unit_Except.Name := Src_Data.Unit;
@@ -8548,11 +8555,10 @@ package body Prj.Nmsc is
while FF /= No_File_Found loop
OK := False;
Source := In_Tree.First_Source;
-
while Source /= No_Source loop
declare
Src_Data : Source_Data renames
- In_Tree.Sources.Table (Source);
+ In_Tree.Sources.Table (Source);
begin
if Src_Data.File = FF.File then
@@ -8625,12 +8631,12 @@ package body Prj.Nmsc is
while Src_Id /= No_Source loop
declare
Src_Data : Source_Data renames
- In_Tree.Sources.Table (Src_Id);
+ In_Tree.Sources.Table (Src_Id);
begin
if Src_Data.Compiled and then Src_Data.Object_Exists
and then Project_Extends
- (Project, Src_Data.Project, In_Tree)
+ (Project, Src_Data.Project, In_Tree)
then
if Src_Data.Unit = No_Name then
if Src_Data.Kind = Impl then
@@ -8656,10 +8662,9 @@ package body Prj.Nmsc is
declare
Src_Ind : constant Source_File_Index :=
- Sinput.P.Load_Project_File
- (Get_Name_String
- (Src_Data.Path.Name));
-
+ Sinput.P.Load_Project_File
+ (Get_Name_String
+ (Src_Data.Path.Name));
begin
if Sinput.P.Source_File_Is_Subunit
(Src_Ind)
diff --git a/gcc/ada/prj.adb b/gcc/ada/prj.adb
index 505e2da..ca804d9 100644
--- a/gcc/ada/prj.adb
+++ b/gcc/ada/prj.adb
@@ -857,6 +857,7 @@ package body Prj is
Units_Htable.Reset (Tree.Units_HT);
Files_Htable.Reset (Tree.Files_HT);
Source_Paths_Htable.Reset (Tree.Source_Paths_HT);
+ Unit_Sources_Htable.Reset (Tree.Unit_Sources_HT);
-- Private part table
diff --git a/gcc/ada/prj.ads b/gcc/ada/prj.ads
index 18bbd19..c8ce177 100644
--- a/gcc/ada/prj.ads
+++ b/gcc/ada/prj.ads
@@ -696,7 +696,7 @@ package Prj is
Object_Exists : Boolean := True;
-- True if an object file exists
- Object_Linked : Boolean := True;
+ Object_Linked : Boolean := True;
-- False if the object file is not use to link executables or included
-- in libraries.
@@ -804,6 +804,14 @@ package Prj is
Equal => "=");
-- Mapping of source paths to source ids
+ package Unit_Sources_Htable is new Simple_HTable
+ (Header_Num => Header_Num,
+ Element => Source_Id,
+ No_Element => No_Source,
+ Key => Name_Id,
+ Hash => Hash,
+ Equal => "=");
+
type Verbosity is (Default, Medium, High);
-- Verbosity when parsing GNAT Project Files
-- Default is default (very quiet, if no errors).
@@ -1464,6 +1472,7 @@ package Prj is
Units_HT : Units_Htable.Instance;
Files_HT : Files_Htable.Instance;
Source_Paths_HT : Source_Paths_Htable.Instance;
+ Unit_Sources_HT : Unit_Sources_Htable.Instance;
-- Private part
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index cee2069..fef7407 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -11253,7 +11253,7 @@ package body Sem_Prag is
GNAT_Pragma;
Check_Arg_Count (1);
Check_Optional_Identifier (Arg1, Name_Entity);
- Check_Arg_Is_Local_Name (Arg1);
+ Check_Arg_Is_Library_Level_Local_Name (Arg1);
Id := Expression (Arg1);
Analyze (Id);
@@ -11273,6 +11273,7 @@ package body Sem_Prag is
end if;
Set_Has_Pragma_Thread_Local_Storage (E);
+ Set_Has_Gigi_Rep_Item (E);
end Thread_Local_Storage;
----------------