aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2014-10-31 15:28:08 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2014-10-31 15:28:08 +0100
commit4528392f3b932b71ecbe3f25caa1c90a2601c14a (patch)
tree53a0771cee842e6f8992fe563fb7dd279ab6203b /gcc
parent32dfd2e0335282119b8f03e3e05676bdbf6fca84 (diff)
downloadgcc-4528392f3b932b71ecbe3f25caa1c90a2601c14a.zip
gcc-4528392f3b932b71ecbe3f25caa1c90a2601c14a.tar.gz
gcc-4528392f3b932b71ecbe3f25caa1c90a2601c14a.tar.bz2
[multiple changes]
2014-10-31 Vincent Celier <celier@adacore.com> * prj-part.adb (Parse_Single_Project): Call Set_Display_Name_Of. * prj-proc.adb (Recursive_Process): Call Display_Name_Of to get the project Display_Name. * prj-tree.adb (Display_Name_Of): New function (Set_Display_Name_Of): New procedure. (Create_Project): Call Set_Display_Name_Of. * prj-tree.ads (Display_Name_Of): New function. (Set_Display_Name_Of): New procedure. (Project_Node_Record): New component Display_Name. (Project_Name_And_Node): Remove component Display_Name. * prj-conf.adb (Parse_Project_And_Apply_Config): Use the full Config_File_Path as the Config_File_Name, not just its simple name. 2014-10-31 Thomas Quinot <quinot@adacore.com> * get_scos.adb: Minor reformatting. 2014-10-31 Ed Schonberg <schonberg@adacore.com> * exp_ch5.adb (Expand_Formal_Container_Loop): Create block to capture declaration for cursor to prevent spurious errors when several formal iterators that use the same cursoe name appear in the same context. From-SVN: r216978
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog27
-rw-r--r--gcc/ada/exp_ch5.adb17
-rw-r--r--gcc/ada/get_scos.adb4
-rw-r--r--gcc/ada/prj-conf.adb2
-rw-r--r--gcc/ada/prj-part.adb8
-rw-r--r--gcc/ada/prj-proc.adb19
-rw-r--r--gcc/ada/prj-tree.adb81
-rw-r--r--gcc/ada/prj-tree.ads22
8 files changed, 131 insertions, 49 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 482f230..d2d9914 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,32 @@
2014-10-31 Vincent Celier <celier@adacore.com>
+ * prj-part.adb (Parse_Single_Project): Call Set_Display_Name_Of.
+ * prj-proc.adb (Recursive_Process): Call Display_Name_Of to
+ get the project Display_Name.
+ * prj-tree.adb (Display_Name_Of): New function
+ (Set_Display_Name_Of): New procedure.
+ (Create_Project): Call Set_Display_Name_Of.
+ * prj-tree.ads (Display_Name_Of): New function.
+ (Set_Display_Name_Of): New procedure.
+ (Project_Node_Record): New component Display_Name.
+ (Project_Name_And_Node): Remove component Display_Name.
+ * prj-conf.adb (Parse_Project_And_Apply_Config): Use the full
+ Config_File_Path as the Config_File_Name, not just its simple
+ name.
+
+2014-10-31 Thomas Quinot <quinot@adacore.com>
+
+ * get_scos.adb: Minor reformatting.
+
+2014-10-31 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch5.adb (Expand_Formal_Container_Loop): Create block to
+ capture declaration for cursor to prevent spurious errors when
+ several formal iterators that use the same cursoe name appear
+ in the same context.
+
+2014-10-31 Vincent Celier <celier@adacore.com>
+
* prj-proc.adb (Recursive_Process): Make sure that the project
display name is never No_Name.
diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb
index b414d54..e66a5836 100644
--- a/gcc/ada/exp_ch5.adb
+++ b/gcc/ada/exp_ch5.adb
@@ -2776,6 +2776,7 @@ package body Exp_Ch5 is
----------------------------------
procedure Expand_Formal_Container_Loop (N : Node_Id) is
+ Loc : constant Source_Ptr := Sloc (N);
Isc : constant Node_Id := Iteration_Scheme (N);
I_Spec : constant Node_Id := Iterator_Specification (Isc);
Cursor : constant Entity_Id := Defining_Identifier (I_Spec);
@@ -2783,6 +2784,7 @@ package body Exp_Ch5 is
Stats : constant List_Id := Statements (N);
Advance : Node_Id;
+ Blk_Nod : Node_Id;
Init : Node_Id;
New_Loop : Node_Id;
@@ -2801,12 +2803,19 @@ package body Exp_Ch5 is
(N, Container, Cursor, Init, Advance, New_Loop);
Set_Ekind (Cursor, E_Variable);
- Insert_Action (N, Init);
-
Append_To (Stats, Advance);
- Rewrite (N, New_Loop);
- Analyze (New_Loop);
+ -- Build block to capture declaration of cursor entity.
+
+ Blk_Nod :=
+ Make_Block_Statement (Loc,
+ Declarations => New_List (Init),
+ Handled_Statement_Sequence =>
+ Make_Handled_Sequence_Of_Statements (Loc,
+ Statements => New_List (New_Loop)));
+
+ Rewrite (N, Blk_Nod);
+ Analyze (N);
end Expand_Formal_Container_Loop;
------------------------------------------
diff --git a/gcc/ada/get_scos.adb b/gcc/ada/get_scos.adb
index 4f82139..48c9c46 100644
--- a/gcc/ada/get_scos.adb
+++ b/gcc/ada/get_scos.adb
@@ -302,8 +302,8 @@ begin
From => SCO_Table.Last + 1,
To => 0));
- when others =>
- raise Program_Error;
+ when others =>
+ raise Program_Error;
end case;
diff --git a/gcc/ada/prj-conf.adb b/gcc/ada/prj-conf.adb
index 8d4e3d4..a9fd006 100644
--- a/gcc/ada/prj-conf.adb
+++ b/gcc/ada/prj-conf.adb
@@ -1753,7 +1753,7 @@ package body Prj.Conf is
Update_Ignore_Missing_With (Env.Flags, False);
if Config_File_Path /= null then
- Conf_File_Name := new String'(Simple_Name (Config_File_Path.all));
+ Conf_File_Name := new String'(Config_File_Path.all);
end if;
-- For the second time the project files are parsed, the warning for
diff --git a/gcc/ada/prj-part.adb b/gcc/ada/prj-part.adb
index 34b13bc..234ccdc 100644
--- a/gcc/ada/prj-part.adb
+++ b/gcc/ada/prj-part.adb
@@ -1298,7 +1298,6 @@ package body Prj.Part is
Name_From_Path : constant Name_Id :=
Project_Name_From (Path_Name, Is_Config_File => Is_Config_File);
Name_Of_Project : Name_Id := No_Name;
- Display_Name_Of_Project : Name_Id := No_Name;
Duplicated : Boolean := False;
@@ -1634,11 +1633,11 @@ package body Prj.Part is
end if;
end;
- -- Read the original casing of the project name
+ -- Read the original casing of the project name and put it in the
+ -- project node.
declare
Loc : Source_Ptr;
-
begin
Loc := Location_Of (Project, In_Tree);
for J in 1 .. Name_Len loop
@@ -1646,7 +1645,7 @@ package body Prj.Part is
Loc := Loc + 1;
end loop;
- Display_Name_Of_Project := Name_Find;
+ Set_Display_Name_Of (Project, In_Tree, Name_Find);
end;
declare
@@ -2018,7 +2017,6 @@ package body Prj.Part is
(T => In_Tree.Projects_HT,
K => Name_Of_Project,
E => (Name => Name_Of_Project,
- Display_Name => Display_Name_Of_Project,
Node => Project,
Resolved_Path => Resolved_Path_Name,
Extended => Extended,
diff --git a/gcc/ada/prj-proc.adb b/gcc/ada/prj-proc.adb
index 7fffc32..71ac421 100644
--- a/gcc/ada/prj-proc.adb
+++ b/gcc/ada/prj-proc.adb
@@ -2765,6 +2765,10 @@ package body Prj.Proc is
Success := not Prj.Tree.No (Loaded_Project);
if Success then
+ if Node_Tree.Incomplete_With then
+ From_Project_Node_Tree.Incomplete_With := True;
+ end if;
+
List.Tree := new Project_Tree_Data (Is_Root_Tree => False);
Prj.Initialize (List.Tree);
List.Tree.Shared := In_Tree.Shared;
@@ -2928,9 +2932,9 @@ package body Prj.Proc is
Name : constant Name_Id :=
Name_Of (From_Project_Node, From_Project_Node_Tree);
- Name_Node : constant Tree_Private_Part.Project_Name_And_Node :=
- Tree_Private_Part.Projects_Htable.Get
- (From_Project_Node_Tree.Projects_HT, Name);
+ Display_Name : constant Name_Id :=
+ Display_Name_Of
+ (From_Project_Node, From_Project_Node_Tree);
begin
Project := Processed_Projects.Get (Name);
@@ -2994,14 +2998,7 @@ package body Prj.Proc is
Processed_Projects.Set (Name, Project);
Project.Name := Name;
-
- -- Make sure that the project display name is never No_Name
-
- if Name_Node.Display_Name = No_Name then
- Project.Display_Name := Name;
- else
- Project.Display_Name := Name_Node.Display_Name;
- end if;
+ Project.Display_Name := Display_Name;
Get_Name_String (Name);
diff --git a/gcc/ada/prj-tree.adb b/gcc/ada/prj-tree.adb
index 023947c..52ba043 100644
--- a/gcc/ada/prj-tree.adb
+++ b/gcc/ada/prj-tree.adb
@@ -110,26 +110,27 @@ package body Prj.Tree is
Project_Node_Table.Increment_Last (In_Tree.Project_Nodes);
In_Tree.Project_Nodes.Table
(Project_Node_Table.Last (In_Tree.Project_Nodes)) :=
- (Kind => N_Comment_Zones,
- Qualifier => Unspecified,
- Expr_Kind => Undefined,
- Location => No_Location,
- Directory => No_Path,
- Variables => Empty_Node,
- Packages => Empty_Node,
- Pkg_Id => Empty_Package,
- Name => No_Name,
- Src_Index => 0,
- Path_Name => No_Path,
- Value => No_Name,
- Default => Empty_Value,
- Field1 => Empty_Node,
- Field2 => Empty_Node,
- Field3 => Empty_Node,
- Field4 => Empty_Node,
- Flag1 => False,
- Flag2 => False,
- Comments => Empty_Node);
+ (Kind => N_Comment_Zones,
+ Qualifier => Unspecified,
+ Expr_Kind => Undefined,
+ Location => No_Location,
+ Directory => No_Path,
+ Variables => Empty_Node,
+ Packages => Empty_Node,
+ Pkg_Id => Empty_Package,
+ Name => No_Name,
+ Display_Name => No_Name,
+ Src_Index => 0,
+ Path_Name => No_Path,
+ Value => No_Name,
+ Default => Empty_Value,
+ Field1 => Empty_Node,
+ Field2 => Empty_Node,
+ Field3 => Empty_Node,
+ Field4 => Empty_Node,
+ Flag1 => False,
+ Flag2 => False,
+ Comments => Empty_Node);
Zone := Project_Node_Table.Last (In_Tree.Project_Nodes);
In_Tree.Project_Nodes.Table (To).Comments := Zone;
@@ -170,6 +171,7 @@ package body Prj.Tree is
Packages => Empty_Node,
Pkg_Id => Empty_Package,
Name => No_Name,
+ Display_Name => No_Name,
Src_Index => 0,
Path_Name => No_Path,
Value => Comments.Table (J).Value,
@@ -339,6 +341,7 @@ package body Prj.Tree is
Packages => Empty_Node,
Pkg_Id => Empty_Package,
Name => No_Name,
+ Display_Name => No_Name,
Src_Index => 0,
Path_Name => No_Path,
Value => No_Name,
@@ -432,6 +435,7 @@ package body Prj.Tree is
Packages => Empty_Node,
Pkg_Id => Empty_Package,
Name => No_Name,
+ Display_Name => No_Name,
Src_Index => 0,
Path_Name => No_Path,
Value => No_Name,
@@ -469,6 +473,7 @@ package body Prj.Tree is
Packages => Empty_Node,
Pkg_Id => Empty_Package,
Name => No_Name,
+ Display_Name => No_Name,
Src_Index => 0,
Path_Name => No_Path,
Value => No_Name,
@@ -504,6 +509,7 @@ package body Prj.Tree is
Packages => Empty_Node,
Pkg_Id => Empty_Package,
Name => No_Name,
+ Display_Name => No_Name,
Src_Index => 0,
Path_Name => No_Path,
Value => Comments.Table (J).Value,
@@ -1225,6 +1231,22 @@ package body Prj.Tree is
return In_Tree.Project_Nodes.Table (Node).Name;
end Name_Of;
+ ---------------------
+ -- Display_Name_Of --
+ ---------------------
+
+ function Display_Name_Of
+ (Node : Project_Node_Id;
+ In_Tree : Project_Node_Tree_Ref) return Name_Id
+ is
+ begin
+ pragma Assert
+ (Present (Node)
+ and then
+ In_Tree.Project_Nodes.Table (Node).Kind = N_Project);
+ return In_Tree.Project_Nodes.Table (Node).Display_Name;
+ end Display_Name_Of;
+
--------------------
-- Next_Case_Item --
--------------------
@@ -2424,6 +2446,23 @@ package body Prj.Tree is
In_Tree.Project_Nodes.Table (Node).Name := To;
end Set_Name_Of;
+ -------------------------
+ -- Set_Display_Name_Of --
+ -------------------------
+
+ procedure Set_Display_Name_Of
+ (Node : Project_Node_Id;
+ In_Tree : Project_Node_Tree_Ref;
+ To : Name_Id)
+ is
+ begin
+ pragma Assert
+ (Present (Node)
+ and then
+ In_Tree.Project_Nodes.Table (Node).Kind = N_Project);
+ In_Tree.Project_Nodes.Table (Node).Display_Name := To;
+ end Set_Display_Name_Of;
+
-------------------------------
-- Set_Next_Declarative_Item --
-------------------------------
@@ -2949,6 +2988,7 @@ package body Prj.Tree is
begin
Project := Default_Project_Node (In_Tree, N_Project);
Set_Name_Of (Project, In_Tree, Name);
+ Set_Display_Name_Of (Project, In_Tree, Name);
Set_Directory_Of
(Project, In_Tree,
Path_Name_Type (Get_Directory (File_Name_Type (Full_Path))));
@@ -2968,7 +3008,6 @@ package body Prj.Tree is
Name,
Prj.Tree.Tree_Private_Part.Project_Name_And_Node'
(Name => Name,
- Display_Name => Name,
Resolved_Path => No_Path,
Node => Project,
Extended => False,
diff --git a/gcc/ada/prj-tree.ads b/gcc/ada/prj-tree.ads
index e798d6b..e012d37 100644
--- a/gcc/ada/prj-tree.ads
+++ b/gcc/ada/prj-tree.ads
@@ -269,6 +269,12 @@ package Prj.Tree is
-- Valid for all non empty nodes. May return No_Name for nodes that have
-- no names.
+ function Display_Name_Of
+ (Node : Project_Node_Id;
+ In_Tree : Project_Node_Tree_Ref) return Name_Id;
+ pragma Inline (Display_Name_Of);
+ -- Valid only for N_Project node. Returns the display name of the project.
+
function Kind_Of
(Node : Project_Node_Id;
In_Tree : Project_Node_Tree_Ref) return Project_Node_Kind;
@@ -738,7 +744,14 @@ package Prj.Tree is
In_Tree : Project_Node_Tree_Ref;
To : Name_Id);
pragma Inline (Set_Name_Of);
- -- Valid for all non empty nodes.
+ -- Valid for all non empty nodes
+
+ procedure Set_Display_Name_Of
+ (Node : Project_Node_Id;
+ In_Tree : Project_Node_Tree_Ref;
+ To : Name_Id);
+ pragma Inline (Set_Display_Name_Of);
+ -- Valid only for N_Project nodes
procedure Set_Kind_Of
(Node : Project_Node_Id;
@@ -1159,6 +1172,9 @@ package Prj.Tree is
Directory : Path_Name_Type := No_Path;
-- Only for N_Project
+ Display_Name : Name_Id := No_Name;
+ -- Only for N_Project
+
Expr_Kind : Variable_Kind := Undefined;
-- See below for what Project_Node_Kind it is used
@@ -1479,9 +1495,6 @@ package Prj.Tree is
Name : Name_Id;
-- Name of the project
- Display_Name : Name_Id;
- -- The name of the project as it appears in the .gpr file
-
Node : Project_Node_Id;
-- Node of the project in table Project_Nodes
@@ -1502,7 +1515,6 @@ package Prj.Tree is
No_Project_Name_And_Node : constant Project_Name_And_Node :=
(Name => No_Name,
- Display_Name => No_Name,
Node => Empty_Node,
Resolved_Path => No_Path,
Extended => True,