mirror of git://gcc.gnu.org/git/gcc.git
[multiple changes]
2014-06-13 Ben Brosgol <brosgol@adacore.com> * gnat_rm.texi: Minor fixes. * gnat_ugn.texi: Added a missing "@itemize". 2014-06-13 Robert Dewar <dewar@adacore.com> * 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. From-SVN: r211620
This commit is contained in:
parent
19634e40b7
commit
17a3564142
|
|
@ -1,3 +1,16 @@
|
||||||
|
2014-06-13 Ben Brosgol <brosgol@adacore.com>
|
||||||
|
|
||||||
|
* gnat_rm.texi: Minor fixes.
|
||||||
|
* gnat_ugn.texi: Added a missing "@itemize".
|
||||||
|
|
||||||
|
2014-06-13 Robert Dewar <dewar@adacore.com>
|
||||||
|
|
||||||
|
* 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 <dewar@adacore.com>
|
2014-06-13 Robert Dewar <dewar@adacore.com>
|
||||||
|
|
||||||
* debug.adb: Document debug flag -gnatd.1.
|
* debug.adb: Document debug flag -gnatd.1.
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@ package body Debug is
|
||||||
-- d8 Force opposite endianness in packed stuff
|
-- d8 Force opposite endianness in packed stuff
|
||||||
-- d9 Allow lock free implementation
|
-- d9 Allow lock free implementation
|
||||||
|
|
||||||
-- d.1 Disable fix to make anonymous access types thin
|
-- d.1
|
||||||
-- d.2
|
-- d.2
|
||||||
-- d.3
|
-- d.3
|
||||||
-- d.4
|
-- d.4
|
||||||
|
|
@ -733,12 +733,6 @@ package body Debug is
|
||||||
-- d9 This allows lock free implementation for protected objects
|
-- d9 This allows lock free implementation for protected objects
|
||||||
-- (see Exp_Ch9).
|
-- (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 --
|
-- Documentation for Binder Debug Flags --
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -251,7 +251,6 @@ Implementation Defined Pragmas
|
||||||
* Pragma Suppress_Debug_Info::
|
* Pragma Suppress_Debug_Info::
|
||||||
* Pragma Suppress_Exception_Locations::
|
* Pragma Suppress_Exception_Locations::
|
||||||
* Pragma Suppress_Initialization::
|
* Pragma Suppress_Initialization::
|
||||||
* Pragma Task_Info::
|
|
||||||
* Pragma Task_Name::
|
* Pragma Task_Name::
|
||||||
* Pragma Task_Storage::
|
* Pragma Task_Storage::
|
||||||
* Pragma Test_Case::
|
* Pragma Test_Case::
|
||||||
|
|
@ -10527,6 +10526,8 @@ restriction is in force:
|
||||||
@item Ancestor part cannot be a type mark
|
@item Ancestor part cannot be a type mark
|
||||||
@item Attributes 'Image, 'Width and 'Value not allowed
|
@item Attributes 'Image, 'Width and 'Value not allowed
|
||||||
@item Functions may not update globals
|
@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
|
@end itemize
|
||||||
|
|
||||||
The following restrictions are enforced, but note that they are actually more
|
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 After renaming, cannot use the original name
|
||||||
@item Subprograms can only be renamed to remove package prefix
|
@item Subprograms can only be renamed to remove package prefix
|
||||||
@item Pragma import must be immediately after entity it names
|
@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
|
@end itemize
|
||||||
|
|
||||||
Note that if a unit is compiled in Ada 95 mode with the SPARK restriction,
|
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
|
in the spec of package System.Task_Info in the runtime
|
||||||
library.
|
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})
|
@section package System.Task_Info (@file{s-tasinf.ads})
|
||||||
|
|
||||||
@noindent
|
@noindent
|
||||||
|
|
|
||||||
|
|
@ -22875,12 +22875,14 @@ a default guard area is created.
|
||||||
|
|
||||||
GNAT supplies the following task-related pragma:
|
GNAT supplies the following task-related pragma:
|
||||||
|
|
||||||
|
@itemize
|
||||||
@item @code{TASK_STORAGE}
|
@item @code{TASK_STORAGE}
|
||||||
|
|
||||||
GNAT implements pragma @code{TASK_STORAGE} in the same way as HP Ada.
|
GNAT implements pragma @code{TASK_STORAGE} in the same way as HP Ada.
|
||||||
Both HP Ada and GNAT supply the pragmas @code{PASSIVE},
|
Both HP Ada and GNAT supply the pragmas @code{PASSIVE},
|
||||||
@code{SUPPRESS}, and @code{VOLATILE}.
|
@code{SUPPRESS}, and @code{VOLATILE}.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@node Scheduling and Task Priority
|
@node Scheduling and Task Priority
|
||||||
@subsection Scheduling and Task Priority
|
@subsection Scheduling and Task Priority
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2462,19 +2462,6 @@ package body Layout is
|
||||||
Set_Size_Info (E, Base_Type (E));
|
Set_Size_Info (E, Base_Type (E));
|
||||||
Set_RM_Size (E, RM_Size (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
|
-- For other access types, we use either address size, or, if a fat
|
||||||
-- pointer is used (pointer-to-unconstrained array case), twice the
|
-- pointer is used (pointer-to-unconstrained array case), twice the
|
||||||
-- address size to accommodate a fat pointer.
|
-- address size to accommodate a fat pointer.
|
||||||
|
|
@ -2483,6 +2470,9 @@ package body Layout is
|
||||||
and then Is_Array_Type (Desig_Type)
|
and then Is_Array_Type (Desig_Type)
|
||||||
and then not Is_Constrained (Desig_Type)
|
and then not Is_Constrained (Desig_Type)
|
||||||
and then not Has_Completion_In_Body (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
|
and then not Debug_Flag_6
|
||||||
then
|
then
|
||||||
Init_Size (E, 2 * System_Address_Size);
|
Init_Size (E, 2 * System_Address_Size);
|
||||||
|
|
|
||||||
|
|
@ -13568,30 +13568,16 @@ package body Sem_Ch3 is
|
||||||
Set_Etype (Acc_Type, Acc_Type);
|
Set_Etype (Acc_Type, Acc_Type);
|
||||||
Set_Scope (Acc_Type, New_Subp);
|
Set_Scope (Acc_Type, New_Subp);
|
||||||
|
|
||||||
-- Set size of anonymous access type. Note that anonymous
|
-- Set size of anonymous access type. If we have an access
|
||||||
-- access to Unconstrained always uses thin pointers. This
|
-- to an unconstrained array, this is a fat pointer, so it
|
||||||
-- avoids confusion for the case where two types that should
|
-- is sizes at twice addtress size.
|
||||||
-- 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 ???
|
|
||||||
|
|
||||||
if Is_Array_Type (Desig_Typ)
|
if Is_Array_Type (Desig_Typ)
|
||||||
and then not Is_Constrained (Desig_Typ)
|
and then not Is_Constrained (Desig_Typ)
|
||||||
and then not Debug_Flag_Dot_1
|
|
||||||
then
|
then
|
||||||
Init_Size (Acc_Type, 2 * System_Address_Size);
|
Init_Size (Acc_Type, 2 * System_Address_Size);
|
||||||
|
|
||||||
-- Normal case. This is what we intend to do always when we
|
-- Other cases use a thin pointer
|
||||||
-- 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.
|
|
||||||
|
|
||||||
else
|
else
|
||||||
Init_Size (Acc_Type, System_Address_Size);
|
Init_Size (Acc_Type, System_Address_Size);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue