summaryrefslogtreecommitdiff
path: root/gcc/ada/exp_dbug.ads
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2005-09-05 07:53:24 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2005-09-05 07:53:24 +0000
commit948ef2b825ca5bace1ec247e7c6a121c9c271b71 (patch)
tree81769ea78a2ec7af5e792a2936b265ee2eb8060b /gcc/ada/exp_dbug.ads
parent6e62b6c3b01ad9adc92f4bbed7e97677b1fbcb07 (diff)
downloadgcc-948ef2b825ca5bace1ec247e7c6a121c9c271b71.tar.gz
2005-09-01 Ed Schonberg <schonberg@adacore.com>
Hristian Kirtchev <kirtchev@adacore.com> Javier Miranda <miranda@adacore.com> * exp_ch6.adb (Expand_Call): If an actual is a function call rewritten from object notation, the original node is unanalyzed and carries no semantic information, so that accessiblity checks must be performed on the type of the actual itself. (Expand_N_Subprogram_Declaration): Change last actual parameter for compatibility with Build_Protected_Sub_Specification. (Check_Overriding_Inherited_Interfaces): Add suport to handle overloaded primitives. (Register_Interface_DT_Entry): Use the new name of the formal the the calls to Expand_Interface_Thunk * exp_dbug.ads: Augment comments on encoding of protected types to include the generation of dispatching subprograms when the type implements at least one interface. * lib.ads: Extend information in Load_Stack to include whether a given load comes from a Limited_With_Clause. * lib-load.adb (From_Limited_With_Chain): New predicate to determine whether a potential circularity is harmless, because it includes units loaded through a limited_with clause. Extends previous treatment which did not handle properly arbitrary combinations of limited and non-limited clauses. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103861 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/exp_dbug.ads')
-rw-r--r--gcc/ada/exp_dbug.ads32
1 files changed, 27 insertions, 5 deletions
diff --git a/gcc/ada/exp_dbug.ads b/gcc/ada/exp_dbug.ads
index ebee3903448..9100d9c2fab 100644
--- a/gcc/ada/exp_dbug.ads
+++ b/gcc/ada/exp_dbug.ads
@@ -89,7 +89,7 @@ package Exp_Dbug is
-- x
-- y.z
- -- The separating dots are translated into double underscores.
+ -- The separating dots are translated into double underscores
-----------------------------
-- Handling of Overloading --
@@ -385,6 +385,28 @@ package Exp_Dbug is
-- lock_update1sE
-- lock_udpate2sB
+ -- If the protected type implements at least one interface, the
+ -- following additional operations are created:
+
+ -- lock_get
+
+ -- lock_set
+
+ -- These operations are used to ensure overriding of interface level
+ -- subprograms and proper dispatching on interface class-wide objects.
+ -- The bodies of these operations contain calls to their respective
+ -- protected versions:
+
+ -- function lock_get return Integer is
+ -- begin
+ -- return lock_getP;
+ -- end lock_get;
+
+ -- procedure lock_set (X : Integer) is
+ -- begin
+ -- lock_setP (X);
+ -- end lock_set;
+
----------------------------------------------------
-- Conversion between Entities and External Names --
----------------------------------------------------
@@ -686,9 +708,9 @@ package Exp_Dbug is
-- follows. In this description, let P represent the current
-- bit position in the record.
- -- 1. Initialize P to 0.
+ -- 1. Initialize P to 0
- -- 2. For each field in the record,
+ -- 2. For each field in the record:
-- 2a. If an alignment is given (see below), then round P
-- up, if needed, to the next multiple of that alignment.
@@ -697,7 +719,7 @@ package Exp_Dbug is
-- amount (that is, treat it as an offset from the end of the
-- preceding record).
- -- 2c. Assign P as the actual position of the field.
+ -- 2c. Assign P as the actual position of the field
-- 2d. Compute the length, L, of the represented field (see below)
-- and compute P'=P+L. Unless the field represents a variant part
@@ -963,7 +985,7 @@ package Exp_Dbug is
-- name of the parent unit, to disambiguate child units with the same
-- simple name and (of necessity) different parents.
- -- Note: subprogram renamings are not encoded at the present time.
+ -- Note: subprogram renamings are not encoded at the present time
-- The type is an enumeration type with a single enumeration literal
-- that is an identifier which describes the renamed variable.