atree.adb (Visit_Itype): Create a new name for the generated itype...

* atree.adb (Visit_Itype): Create a new name for the generated itype,
	because the back-end may otherwise treat it as a redefinition of the
	old symbol.

From-SVN: r91875
This commit is contained in:
Arnaud Charlet 2004-12-08 12:25:03 +01:00
parent 87f07a97ad
commit dcdf1790ad
1 changed files with 12 additions and 2 deletions

View File

@ -39,6 +39,7 @@ pragma Style_Checks (All_Checks);
-- bodies) and the C file a-atree.c (for remaining non-inlined bodies). -- bodies) and the C file a-atree.c (for remaining non-inlined bodies).
with Debug; use Debug; with Debug; use Debug;
with Namet; use Namet;
with Nlists; use Nlists; with Nlists; use Nlists;
with Elists; use Elists; with Elists; use Elists;
with Output; use Output; with Output; use Output;
@ -809,6 +810,7 @@ package body Atree is
procedure Debug_Extend_Node; procedure Debug_Extend_Node;
-- Debug routine for debug flag N -- Debug routine for debug flag N
pragma Inline (Debug_Extend_Node);
procedure Debug_Extend_Node is procedure Debug_Extend_Node is
begin begin
@ -827,8 +829,6 @@ package body Atree is
end if; end if;
end Debug_Extend_Node; end Debug_Extend_Node;
pragma Inline (Debug_Extend_Node);
begin begin
pragma Assert (not (Has_Extension (Node))); pragma Assert (not (Has_Extension (Node)));
Result := Allocate_Initialize_Node (Node, With_Extension => True); Result := Allocate_Initialize_Node (Node, With_Extension => True);
@ -1585,6 +1585,16 @@ package body Atree is
New_Itype := New_Copy (Old_Itype); New_Itype := New_Copy (Old_Itype);
-- The new Itype has all the attributes of the old one, and
-- we just copy the contents of the entity. However, the back-end
-- needs different names for debugging purposes, so we create a
-- new internal name by appending the letter 'c' (copy) to the
-- name of the original.
Get_Name_String (Chars (Old_Itype));
Add_Char_To_Name_Buffer ('c');
Set_Chars (New_Itype, Name_Enter);
-- If our associated node is an entity that has already been copied, -- If our associated node is an entity that has already been copied,
-- then set the associated node of the copy to point to the right -- then set the associated node of the copy to point to the right
-- copy. If we have copied an Itype that is itself the associated -- copy. If we have copied an Itype that is itself the associated