Commit 4b790886 by Bob Duff Committed by Arnaud Charlet

itypes.ads, itypes.adb (Create_Itype): For access-to-subprogram types...

2007-12-06  Bob Duff  <duff@adacore.com>

	* itypes.ads, itypes.adb (Create_Itype): For access-to-subprogram
	types, set Can_Use_Internal_Rep appropriately, based on
	Always_Compatible_Rep_On_Target.

From-SVN: r130878
parent d776fae4
......@@ -28,6 +28,7 @@ with Opt; use Opt;
with Sem; use Sem;
with Sinfo; use Sinfo;
with Stand; use Stand;
with Targparm; use Targparm;
package body Itypes is
......@@ -67,6 +68,10 @@ package body Itypes is
Set_Is_Frozen (Typ);
end if;
if Ekind in Access_Subprogram_Type_Kind then
Set_Can_Use_Internal_Rep (Typ, not Always_Compatible_Rep_On_Target);
end if;
return Typ;
end Create_Itype;
......
......@@ -35,9 +35,9 @@ package Itypes is
-- Implicit Types --
--------------------
-- Implicit types are types and subtypes created by the semantic phase
-- or the expander to reflect the underlying semantics. These could be
-- generated by building trees for corresponding declarations and then
-- Implicit types (Itypes) are types and subtypes created by the semantic
-- phase or the expander to reflect the underlying semantics. These could
-- be generated by building trees for corresponding declarations and then
-- analyzing these trees, but there are three reasons for not doing this:
-- 1. The declarations would require more tree nodes
......@@ -55,9 +55,9 @@ package Itypes is
-- The type declaration declaring an Itype must be analyzed with checks
-- off because this declaration has not been inserted in the tree (if it
-- has been then it is not an itype), and hence checks that would be
-- has been then it is not an Itype), and hence checks that would be
-- generated during the analysis cannot be inserted in the tree. At any
-- rate, itype analysis should always be done with checks off, otherwise
-- rate, Itype analysis should always be done with checks off, otherwise
-- duplicate checks will most likely be emitted.
-- Unlike types declared explicitly, implicit types are defined on first
......@@ -73,16 +73,17 @@ package Itypes is
-- call to New_Copy_Tree is to create a complete duplicate of a tree,
-- as though it had appeared separately in the source), the Itype in
-- question is duplicated as part of the New_Copy_Tree processing.
-- As a consequence of this copying mechanism, the association between
-- itypes and associated nodes must be one-to-one: several itypes must
-- Itypes and associated nodes must be one-to-one: several Itypes must
-- not share an associated node. For example, the semantic decoration
-- of an array aggregate generates several itypes: for each index subtype
-- of an array aggregate generates several Itypes: for each index subtype
-- and for the array subtype. The associated node of each index subtype
-- is the corresponding range expression.
-----------------
-- Subprograms --
-----------------
------------------
-- Create_Itype --
------------------
function Create_Itype
(Ekind : Entity_Kind;
......@@ -91,10 +92,10 @@ package Itypes is
Suffix : Character := ' ';
Suffix_Index : Nat := 0;
Scope_Id : Entity_Id := Current_Scope) return Entity_Id;
-- Used to create a new Itype.
-- Used to create a new Itype
--
-- Related_Nod is the node for which this Itype was created. It is
-- set as the Associated_Node_For_Itype of the new itype. The Sloc of
-- set as the Associated_Node_For_Itype of the new Itype. The Sloc of
-- the new Itype is that of this node.
--
-- Related_Id is present only if the implicit type name may be referenced
......@@ -113,6 +114,9 @@ package Itypes is
--
-- The Scope_Id parameter specifies the scope of the created type, and
-- is normally the Current_Scope as shown, but can be set otherwise.
--
-- If Ekind is in Access_Subprogram_Type_Kind, Can_Use_Internal_Rep is set
-- True, unless Always_Compatible_Rep_On_Target is True.
---------------------------------
-- Create_Null_Excluding_Itype --
......@@ -126,7 +130,7 @@ package Itypes is
-- returns an internal access-subtype declaration of T that has the null
-- exclusion attribute set to True.
--
-- Usage of null-excluding itypes
-- Usage of null-excluding Itypes
-- ------------------------------
--
-- type T1 is access ...
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment