aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2012-01-30 12:33:53 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2012-01-30 12:33:53 +0100
commit1423761633d64bf0547ca2583fe4ef5cc67b4b83 (patch)
treecfcbda0dda9cc0c084e0a1268ea454d024802355 /gcc/ada
parentde6e4fc49410404bb589a382822a37656b37c577 (diff)
downloadgcc-1423761633d64bf0547ca2583fe4ef5cc67b4b83.zip
gcc-1423761633d64bf0547ca2583fe4ef5cc67b4b83.tar.gz
gcc-1423761633d64bf0547ca2583fe4ef5cc67b4b83.tar.bz2
[multiple changes]
2012-01-30 Vincent Celier <celier@adacore.com> * prj-nmsc.adb (Check_Interfaces): Report an error when a unit from Library_Interface is not a unit of the project. 2012-01-30 Vincent Pucci <pucci@adacore.com> * sem_prag.adb (Make_Aspect_For_PPC_In_Gen_Sub_Decl): Parent links fixed inside PPC pragmas. * sem_ch12.adb: Move call to Make_Aspect_For_PPC_In_Gen_Sub_Decl. 2012-01-30 Thomas Quinot <quinot@adacore.com> * s-ransee.ads: Minor reformatting. From-SVN: r183705
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog15
-rw-r--r--gcc/ada/prj-nmsc.adb33
-rw-r--r--gcc/ada/s-ransee.ads4
-rw-r--r--gcc/ada/sem_ch12.adb18
-rw-r--r--gcc/ada/sem_prag.adb14
5 files changed, 65 insertions, 19 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index cfc585f..624aa11 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,18 @@
+2012-01-30 Vincent Celier <celier@adacore.com>
+
+ * prj-nmsc.adb (Check_Interfaces): Report an error when a
+ unit from Library_Interface is not a unit of the project.
+
+2012-01-30 Vincent Pucci <pucci@adacore.com>
+
+ * sem_prag.adb (Make_Aspect_For_PPC_In_Gen_Sub_Decl): Parent
+ links fixed inside PPC pragmas.
+ * sem_ch12.adb: Move call to Make_Aspect_For_PPC_In_Gen_Sub_Decl.
+
+2012-01-30 Thomas Quinot <quinot@adacore.com>
+
+ * s-ransee.ads: Minor reformatting.
+
2012-01-30 Pascal Obry <obry@adacore.com>
* prj.ads, prj.adb (For_Each_Source): Add support for skipping
diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb
index 00cc88a..0fbcd11 100644
--- a/gcc/ada/prj-nmsc.adb
+++ b/gcc/ada/prj-nmsc.adb
@@ -2556,6 +2556,8 @@ package body Prj.Nmsc is
Interface_ALIs : String_List_Id := Nil_String;
+ Unit_Found : Boolean;
+
begin
if not Interfaces.Default then
@@ -2583,7 +2585,15 @@ package body Prj.Nmsc is
Project_2 := Project;
Big_Loop :
while Project_2 /= No_Project loop
- Iter := For_Each_Source (Data.Tree, Project_2);
+ if Project.Qualifier = Aggregate_Library then
+ -- For an aggregate library we want to consider sources of
+ -- all aggregated projects.
+
+ Iter := For_Each_Source (Data.Tree);
+
+ else
+ Iter := For_Each_Source (Data.Tree, Project_2);
+ end if;
loop
Source := Prj.Element (Iter);
@@ -2680,11 +2690,20 @@ package body Prj.Nmsc is
Get_Name_String (Element.Value);
To_Lower (Name_Buffer (1 .. Name_Len));
Name := Name_Find;
+ Unit_Found := False;
Project_2 := Project;
Big_Loop_2 :
while Project_2 /= No_Project loop
- Iter := For_Each_Source (Data.Tree, Project_2);
+ if Project.Qualifier = Aggregate_Library then
+ -- For an aggregate library we want to consider sources of
+ -- all aggregated projects.
+
+ Iter := For_Each_Source (Data.Tree);
+
+ else
+ Iter := For_Each_Source (Data.Tree, Project_2);
+ end if;
loop
Source := Prj.Element (Iter);
@@ -2731,6 +2750,7 @@ package body Prj.Nmsc is
String_Element_Table.Last (Shared.String_Elements);
end if;
+ Unit_Found := True;
exit Big_Loop_2;
end if;
@@ -2740,6 +2760,15 @@ package body Prj.Nmsc is
Project_2 := Project_2.Extends;
end loop Big_Loop_2;
+ if not Unit_Found then
+ Error_Msg_Name_1 := Name_Id (Name);
+
+ Error_Msg
+ (Data.Flags,
+ "%% is not a unit of this project",
+ Element.Location, Project);
+ end if;
+
List := Element.Next;
end loop;
diff --git a/gcc/ada/s-ransee.ads b/gcc/ada/s-ransee.ads
index ffae832..d5414ef 100644
--- a/gcc/ada/s-ransee.ads
+++ b/gcc/ada/s-ransee.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2011, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -36,7 +36,7 @@
-- o one based on Ada.Calendar
-- o one based on Ada.Real_Time
--- This is required because Ada.Calendar cannot be used on ravenscar, but
+-- This is required because Ada.Calendar cannot be used on Ravenscar, but
-- Ada.Real_Time drags in the whole tasking runtime on regular platforms.
package System.Random_Seed is
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
index 90ff363..34c100e 100644
--- a/gcc/ada/sem_ch12.adb
+++ b/gcc/ada/sem_ch12.adb
@@ -3112,15 +3112,6 @@ package body Sem_Ch12 is
end;
end if;
- -- For ASIS purposes, convert any postcondition, precondition pragmas
- -- into aspects, if N is not a compilation unit by itself, in order to
- -- enable the analysis of expressions inside the corresponding PPC
- -- pragmas.
-
- if ASIS_Mode and then Is_List_Member (N) then
- Make_Aspect_For_PPC_In_Gen_Sub_Decl (N);
- end if;
-
Spec := Specification (N);
Id := Defining_Entity (Spec);
Generate_Definition (Id);
@@ -3216,6 +3207,15 @@ package body Sem_Ch12 is
Save_Global_References (Original_Node (N));
+ -- For ASIS purposes, convert any postcondition, precondition pragmas
+ -- into aspects, if N is not a compilation unit by itself, in order to
+ -- enable the analysis of expressions inside the corresponding PPC
+ -- pragmas.
+
+ if ASIS_Mode and then Is_List_Member (N) then
+ Make_Aspect_For_PPC_In_Gen_Sub_Decl (N);
+ end if;
+
-- To capture global references, analyze the expressions of aspects,
-- and propagate information to original tree. Note that in this case
-- analysis of attributes is not delayed until the freeze point.
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index c0e0e58..326573f 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -15286,7 +15286,6 @@ package body Sem_Prag is
Aspects : constant List_Id := New_List;
Loc : constant Source_Ptr := Sloc (Decl);
Or_Decl : constant Node_Id := Original_Node (Decl);
- Aspect : Node_Id;
Original_Aspects : List_Id;
-- To capture global references, a copy of the created aspects must be
@@ -15309,16 +15308,19 @@ package body Sem_Prag is
-- Make an aspect from any PPC pragma
- Aspect :=
+ Append (
Make_Aspect_Specification (Loc,
Identifier =>
Make_Identifier (Loc, Chars (Pragma_Identifier (Prag))),
- Expression => Expression (Prag_Arg_Ass));
+ Expression =>
+ Copy_Separate_Tree (Expression (Prag_Arg_Ass))),
+ Aspects);
- Append (Aspect, Aspects);
-
- -- Set the pragma node analyzed to avoid any further analysis
+ -- Generate the analysis information in the pragma expression
+ -- and then set the pragma node analyzed to avoid any further
+ -- analysis.
+ Analyze (Expression (Prag_Arg_Ass));
Set_Analyzed (Prag, True);
when others => null;