From 75a284a76f2d1f6741ab3b9465dee26c527c6d0f Mon Sep 17 00:00:00 2001 From: charlet Date: Fri, 13 Jun 2014 10:06:13 +0000 Subject: [PATCH] 2014-06-13 Ben Brosgol * gnat_rm.texi: Minor fixes. * gnat_ugn.texi: Added a missing "@itemize". 2014-06-13 Robert Dewar * debug.adb: Remove -gnatd.1 flag documentation. * layout.adb (Layout_Type): Remove special handling of size for anonymous access type. * sem_ch3.adb (Replace_Type): Remove special handling of size for anonymous access type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211620 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 13 +++++++++++++ gcc/ada/debug.adb | 8 +------- gcc/ada/gnat_rm.texi | 6 ++++-- gcc/ada/gnat_ugn.texi | 2 ++ gcc/ada/layout.adb | 16 +++------------- gcc/ada/sem_ch3.adb | 22 ++++------------------ 6 files changed, 27 insertions(+), 40 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 2065ccc..6f4785f 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,16 @@ +2014-06-13 Ben Brosgol + + * gnat_rm.texi: Minor fixes. + * gnat_ugn.texi: Added a missing "@itemize". + +2014-06-13 Robert Dewar + + * debug.adb: Remove -gnatd.1 flag documentation. + * layout.adb (Layout_Type): Remove special handling of size + for anonymous access type. + * sem_ch3.adb (Replace_Type): Remove special handling of size + for anonymous access type. + 2014-06-13 Robert Dewar * debug.adb: Document debug flag -gnatd.1. diff --git a/gcc/ada/debug.adb b/gcc/ada/debug.adb index 4e62365..eaab4ff 100644 --- a/gcc/ada/debug.adb +++ b/gcc/ada/debug.adb @@ -155,7 +155,7 @@ package body Debug is -- d8 Force opposite endianness in packed stuff -- d9 Allow lock free implementation - -- d.1 Disable fix to make anonymous access types thin + -- d.1 -- d.2 -- d.3 -- d.4 @@ -733,12 +733,6 @@ package body Debug is -- d9 This allows lock free implementation for protected objects -- (see Exp_Ch9). - -- d.1 There is a problem with making anonymous access types which refer - -- to an unconstrained array thick. And we have a fix, which is to - -- make them thin always. Search for Debug_Flag_Dot_1 in layout.adb - -- and sem_ch3.adb to see the explanation for why we don't enable this - -- fix for now unless this debug flag is set. - ------------------------------------------ -- Documentation for Binder Debug Flags -- ------------------------------------------ diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index 0ae2e21..e94dd9d 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -251,7 +251,6 @@ Implementation Defined Pragmas * Pragma Suppress_Debug_Info:: * Pragma Suppress_Exception_Locations:: * Pragma Suppress_Initialization:: -* Pragma Task_Info:: * Pragma Task_Name:: * Pragma Task_Storage:: * Pragma Test_Case:: @@ -10527,6 +10526,8 @@ restriction is in force: @item Ancestor part cannot be a type mark @item Attributes 'Image, 'Width and 'Value not allowed @item Functions may not update globals +@item Subprograms may not contain direct calls to themselves (prevents recursion within unit) +@item Call to subprogram not allowed in same unit before body has been seen (prevents recursion within unit) @end itemize The following restrictions are enforced, but note that they are actually more @@ -10564,6 +10565,7 @@ currently checked by the SPARK_05 restriction: @item After renaming, cannot use the original name @item Subprograms can only be renamed to remove package prefix @item Pragma import must be immediately after entity it names +@item No mutual recursion between multiple units (this can be checked with gnatcheck) @end itemize Note that if a unit is compiled in Ada 95 mode with the SPARK restriction, @@ -22454,7 +22456,7 @@ for the version of GNAT that you are using, see the documentation in the spec of package System.Task_Info in the runtime library. -@node package System.Task_Info (s-tasinf.ads) +@node System.Task_Info (s-tasinf.ads) @section package System.Task_Info (@file{s-tasinf.ads}) @noindent diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index d9c960c..dde83b4 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -22875,12 +22875,14 @@ a default guard area is created. GNAT supplies the following task-related pragma: +@itemize @item @code{TASK_STORAGE} GNAT implements pragma @code{TASK_STORAGE} in the same way as HP Ada. Both HP Ada and GNAT supply the pragmas @code{PASSIVE}, @code{SUPPRESS}, and @code{VOLATILE}. @end itemize + @node Scheduling and Task Priority @subsection Scheduling and Task Priority diff --git a/gcc/ada/layout.adb b/gcc/ada/layout.adb index 7b0cdc5..52c981e 100644 --- a/gcc/ada/layout.adb +++ b/gcc/ada/layout.adb @@ -2462,19 +2462,6 @@ package body Layout is Set_Size_Info (E, Base_Type (E)); Set_RM_Size (E, RM_Size (Base_Type (E))); - -- Anonymous access types are always thin, because otherwise we get - -- into strange conformance problems between two types, one of which - -- can see that something is unconstrained and one of which cannot. - - elsif Ekind (E) = E_Anonymous_Access_Type - - -- For now eneable this only if debug flag -gnatd.1 is set, since - -- we have some regressions in gnatcoll that need sorting out??? - - and then Debug_Flag_Dot_1 - then - Init_Size (E, System_Address_Size); - -- For other access types, we use either address size, or, if a fat -- pointer is used (pointer-to-unconstrained array case), twice the -- address size to accommodate a fat pointer. @@ -2483,6 +2470,9 @@ package body Layout is and then Is_Array_Type (Desig_Type) and then not Is_Constrained (Desig_Type) and then not Has_Completion_In_Body (Desig_Type) + + -- Debug Flag -gnatd6 says make all pointers to unconstrained thin + and then not Debug_Flag_6 then Init_Size (E, 2 * System_Address_Size); diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 03e9154..f9ccf5b 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -13568,30 +13568,16 @@ package body Sem_Ch3 is Set_Etype (Acc_Type, Acc_Type); Set_Scope (Acc_Type, New_Subp); - -- Set size of anonymous access type. Note that anonymous - -- access to Unconstrained always uses thin pointers. This - -- avoids confusion for the case where two types that should - -- conform but end up differning, because in one case we can - -- see the unconstrained designated type, and in the other - -- case we can't see it yet (full type declaration not seen - -- yet), so we default to thin in that case anyway. - - -- For now, for the access to unconstrained array scase, we - -- are making the above change only if debug flag -gnatd.1 - -- is set. That's because the change, though almost - -- certainly correct, is causing gnatcoll regressions - -- which we have to sort out ??? + -- Set size of anonymous access type. If we have an access + -- to an unconstrained array, this is a fat pointer, so it + -- is sizes at twice addtress size. if Is_Array_Type (Desig_Typ) and then not Is_Constrained (Desig_Typ) - and then not Debug_Flag_Dot_1 then Init_Size (Acc_Type, 2 * System_Address_Size); - -- Normal case. This is what we intend to do always when we - -- finally install the change discussed above. In the case - -- of access to unconstrained array, then we take this path - -- for now only if -gnatd.1 debug flag is set. + -- Other cases use a thin pointer else Init_Size (Acc_Type, System_Address_Size); -- 2.7.4