diff options
author | Hristian Kirtchev <kirtchev@adacore.com> | 2008-04-08 08:55:36 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2008-04-08 08:55:36 +0200 |
commit | 7f8b32d5413ad3e2b1a6f67f15a778c72d1c14f7 (patch) | |
tree | 02f65010ed4721d7ebd5051768f91745b7c17075 /gcc | |
parent | fc5c20afff6cfc1139d2fafbb671cfcf7339e633 (diff) | |
download | gcc-7f8b32d5413ad3e2b1a6f67f15a778c72d1c14f7.zip gcc-7f8b32d5413ad3e2b1a6f67f15a778c72d1c14f7.tar.gz gcc-7f8b32d5413ad3e2b1a6f67f15a778c72d1c14f7.tar.bz2 |
s-stoele.ads, [...]: Move the location of Dummy_Communication_Block from System.Storage_Elements to...
2008-04-08 Hristian Kirtchev <kirtchev@adacore.com>
* s-stoele.ads, s-soflin.ads: Move the location of
Dummy_Communication_Block from System.Storage_Elements to
System.Soft_Links.
* s-tpobop.ads: Add comment on usage of Dummy_Communication_Block to
emulate Communication_Block in certain scenarios.
From-SVN: r134051
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/s-soflin.ads | 23 | ||||
-rw-r--r-- | gcc/ada/s-stoele.ads | 23 | ||||
-rw-r--r-- | gcc/ada/s-tpobop.ads | 9 |
3 files changed, 32 insertions, 23 deletions
diff --git a/gcc/ada/s-soflin.ads b/gcc/ada/s-soflin.ads index 19f851c..bc8bd1d 100644 --- a/gcc/ada/s-soflin.ads +++ b/gcc/ada/s-soflin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2007, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2008, 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- -- @@ -381,4 +381,25 @@ package System.Soft_Links is function Get_Exc_Stack_Addr_Soft return Address; + -- The following is a dummy record designed to mimic Communication_Block as + -- defined in s-tpobop.ads: + + -- type Communication_Block is record + -- Self : Task_Id; -- An access type + -- Enqueued : Boolean := True; + -- Cancelled : Boolean := False; + -- end record; + + -- The record is used in the construction of the predefined dispatching + -- primitive _disp_asynchronous_select in order to avoid the import of + -- System.Tasking.Protected_Objects.Operations. Note that this package + -- is always imported in the presence of interfaces since the dispatch + -- table uses entities from here. + + type Dummy_Communication_Block is record + Comp_1 : Address; -- Address and access have the same size + Comp_2 : Boolean; + Comp_3 : Boolean; + end record; + end System.Soft_Links; diff --git a/gcc/ada/s-stoele.ads b/gcc/ada/s-stoele.ads index ef75211..45871a5 100644 --- a/gcc/ada/s-stoele.ads +++ b/gcc/ada/s-stoele.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2007, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2008, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -122,25 +122,4 @@ package System.Storage_Elements is pragma Inline_Always (To_Integer); pragma Pure_Function (To_Integer); - -- The following is a dummy record designed to mimic Communication_Block as - -- defined in s-tpobop.ads: - - -- type Communication_Block is record - -- Self : Task_Id; -- An access type - -- Enqueued : Boolean := True; - -- Cancelled : Boolean := False; - -- end record; - - -- The record is used in the construction of the predefined dispatching - -- primitive _disp_asynchronous_select in order to avoid the import of - -- System.Tasking.Protected_Objects.Operations. Note that this package - -- is always imported in the presence of interfaces since the dispatch - -- table uses entities from here. - - type Dummy_Communication_Block is record - Comp_1 : Address; -- Address and access have the same size - Comp_2 : Boolean; - Comp_3 : Boolean; - end record; - end System.Storage_Elements; diff --git a/gcc/ada/s-tpobop.ads b/gcc/ada/s-tpobop.ads index 8620c79..0e409aa 100644 --- a/gcc/ada/s-tpobop.ads +++ b/gcc/ada/s-tpobop.ads @@ -198,6 +198,15 @@ private end record; pragma Volatile (Communication_Block); + -- When a program contains limited interfaces, the compiler generates the + -- predefined primitives associated with dispatching selects. One of the + -- parameters of these routines is of type Communication_Block. Even if + -- the program lacks implementing concurrent types, the tasking runtime is + -- dragged in unconditionally because of Communication_Block. To avoid this + -- case, the compiler uses type Dummy_Communication_Block which defined in + -- System.Soft_Links. If the structure of Communication_Block is changed, + -- the corresponding dummy type must be changed as well. + -- The Communication_Block seems to be a relic. At the moment, the -- compiler seems to be generating unnecessary conditional code based on -- this block. See the code generated for async. select with task entry |