summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-19 16:27:18 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-19 16:27:18 +0000
commitefe1035c41d7bb8a580b3153e8d5e4ceeab1013f (patch)
treea928f3a0c12dc473d86f6fa4b138d002407c7f64
parent62206d34fbed0af4ecde1cbea17997577afb1377 (diff)
downloadgcc-efe1035c41d7bb8a580b3153e8d5e4ceeab1013f.tar.gz
2012-03-19 Hristian Kirtchev <kirtchev@adacore.com>
* sem_ch4.adb (Analyze_Allocator): Detect an allocator generated by the build-in-place machinery where the designated type is indefinite, but the underlying type is not. Do not emit errors related to missing initialization in this case. 2012-03-19 Robert Dewar <dewar@adacore.com> * gnat_ugn.texi: Add documentation for -gnateinnn switch. * sem_elab.adb, put_alfa.adb, lib-xref-alfa.adb: Minor reformatting. * sem_prag.adb: Minor comment update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185525 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ada/ChangeLog13
-rw-r--r--gcc/ada/gnat_ugn.texi6
-rw-r--r--gcc/ada/lib-xref-alfa.adb6
-rw-r--r--gcc/ada/put_alfa.adb1
-rw-r--r--gcc/ada/sem_ch4.adb15
-rw-r--r--gcc/ada/sem_elab.adb3
-rw-r--r--gcc/ada/sem_prag.adb2
7 files changed, 38 insertions, 8 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 9fa56eb335b..956ff44e759 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,16 @@
+2012-03-19 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * sem_ch4.adb (Analyze_Allocator): Detect an allocator generated
+ by the build-in-place machinery where the designated type is
+ indefinite, but the underlying type is not. Do not emit errors
+ related to missing initialization in this case.
+
+2012-03-19 Robert Dewar <dewar@adacore.com>
+
+ * gnat_ugn.texi: Add documentation for -gnateinnn switch.
+ * sem_elab.adb, put_alfa.adb, lib-xref-alfa.adb: Minor reformatting.
+ * sem_prag.adb: Minor comment update.
+
2012-03-15 Robert Dewar <dewar@adacore.com>
* errout.ads: Add entry for translating -gnateinn to
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index 365a4478a1d..b8539f03d47 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -4155,6 +4155,12 @@ Display full source path name in brief error messages.
@cindex @option{-gnateG} (@command{gcc})
Save result of preprocessing in a text file.
+@item ^-gnatei^/MAX_INSTANTIATIONS=^@var{nnn}
+@cindex @option{-gnatei} (@command{gcc})
+Set maximum number of instantiations during compilation of a single unit to
+@var{nnn}. This may be useful in increasing the default maximum of 8000 for
+the rare case when a single unit legitimately exceeds this limit.
+
@item ^-gnateI^/MULTI_UNIT_INDEX=^@var{nnn}
@cindex @option{-gnateI} (@command{gcc})
Indicates that the source is a multi-unit source and that the index of the
diff --git a/gcc/ada/lib-xref-alfa.adb b/gcc/ada/lib-xref-alfa.adb
index c1c6b25ca9c..4961fedc8c1 100644
--- a/gcc/ada/lib-xref-alfa.adb
+++ b/gcc/ada/lib-xref-alfa.adb
@@ -211,10 +211,10 @@ package body Alfa is
procedure Add_Alfa_File (U : Unit_Number_Type; D : Nat) is
From : Scope_Index;
+ S : constant Source_File_Index := Source_Index (U);
- S : constant Source_File_Index := Source_Index (U);
-
- File_Name, Unit_File_Name : String_Ptr;
+ File_Name : String_Ptr;
+ Unit_File_Name : String_Ptr;
begin
-- Source file could be inexistant as a result of an error, if option
diff --git a/gcc/ada/put_alfa.adb b/gcc/ada/put_alfa.adb
index a5580a8018c..f4715bfdd84 100644
--- a/gcc/ada/put_alfa.adb
+++ b/gcc/ada/put_alfa.adb
@@ -56,6 +56,7 @@ begin
Write_Info_Char ('-');
Write_Info_Char ('>');
Write_Info_Char (' ');
+
for N in F.Unit_File_Name'Range loop
Write_Info_Char (F.Unit_File_Name (N));
end loop;
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index ffc3a271c63..d56da36f3fa 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -661,9 +661,22 @@ package body Sem_Ch4 is
if Is_Indefinite_Subtype (Type_Id)
and then Serious_Errors_Detected = Sav_Errs
then
- if Is_Class_Wide_Type (Type_Id) then
+ -- The build-in-place machinery may produce an allocator when
+ -- the designated type is indefinite but the underlying type is
+ -- not. In this case the unknown discriminants are meaningless
+ -- and should not trigger error messages. Check the parent node
+ -- because the allocator is marked as coming from source.
+
+ if Present (Underlying_Type (Type_Id))
+ and then not Is_Indefinite_Subtype (Underlying_Type (Type_Id))
+ and then not Comes_From_Source (Parent (N))
+ then
+ null;
+
+ elsif Is_Class_Wide_Type (Type_Id) then
Error_Msg_N
("initialization required in class-wide allocation", N);
+
else
if Ada_Version < Ada_2005
and then Is_Limited_Type (Type_Id)
diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb
index 2656f46de5b..4f28e1eb1d7 100644
--- a/gcc/ada/sem_elab.adb
+++ b/gcc/ada/sem_elab.adb
@@ -2620,13 +2620,10 @@ package body Sem_Elab is
if No (Nam) then
return Empty;
-
elsif Nkind (Nam) = N_Selected_Component then
return Entity (Selector_Name (Nam));
-
elsif not Is_Entity_Name (Nam) then
return Empty;
-
else
return Entity (Nam);
end if;
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index d55325a272f..1cd35904a20 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -3704,7 +3704,7 @@ package body Sem_Prag is
Check_At_Most_N_Arguments (1);
-- Modeled internally as
- -- pragma Unsuppress (Atomic_Synchronization [,Entity])
+ -- pragma Suppress/Unsuppress (Atomic_Synchronization [,Entity])
Rewrite (N,
Make_Pragma (Loc,