Commit 57568d91 by Ed Schonberg Committed by Geert Bosch

einfo.ads: Block_Node points to the identifier of the block...

	* einfo.ads: Block_Node points to the identifier of the block, not to
	the block node itself, to preserve the link when the block is
	rewritten, e.g. within an if-statement with a static condition.

	* inline.adb (Cleanup_Scopes): recover block statement from block
	entity using new meaning of Block_Node.

	* sem_ch5.adb (Analyze_Block_Statement): set Block_Node to point to
	identifier of block node, rather than to node itself.

From-SVN: r47649
parent 0815d36a
2001-12-04 Ed Schonberg <schonber@gnat.com>
* einfo.ads: Block_Node points to the identifier of the block, not to
the block node itself, to preserve the link when the block is
rewritten, e.g. within an if-statement with a static condition.
* inline.adb (Cleanup_Scopes): recover block statement from block
entity using new meaning of Block_Node.
* sem_ch5.adb (Analyze_Block_Statement): set Block_Node to point to
identifier of block node, rather than to node itself.
2001-12-04 Gary Dismukes <dismukes@gnat.com> 2001-12-04 Gary Dismukes <dismukes@gnat.com>
* layout.adb: * layout.adb:
......
...@@ -394,7 +394,14 @@ package Einfo is ...@@ -394,7 +394,14 @@ package Einfo is
-- returns the entity unchanged. -- returns the entity unchanged.
-- Block_Node (Node11) -- Block_Node (Node11)
-- Present in block entities. Points to the Block_Statement itself. -- Present in block entities. Points to the identifier in the
-- Block_Statement itself. Used when retrieving the block construct
-- for finalization purposes, The block entity has an implicit label
-- declaration in the enclosing declarative part, and has otherwise
-- no direct connection in the tree with the block statement.
-- The link is to the identifier (which is an occurence of the entity)
-- and not to the block_statement itself, because the statement may
-- be rewritten, e.g. in the process of removing dead code.
-- Body_Entity (Node19) -- Body_Entity (Node19)
-- Present in package and generic package entities, points to the -- Present in package and generic package entities, points to the
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- $Revision: 1.55 $ -- $Revision$
-- -- -- --
-- Copyright (C) 1992-2001 Free Software Foundation, Inc. -- -- Copyright (C) 1992-2001 Free Software Foundation, Inc. --
-- -- -- --
...@@ -672,7 +672,7 @@ package body Inline is ...@@ -672,7 +672,7 @@ package body Inline is
end if; end if;
if Ekind (Scop) = E_Block then if Ekind (Scop) = E_Block then
Decl := Block_Node (Scop); Decl := Parent (Block_Node (Scop));
else else
Decl := Unit_Declaration_Node (Scop); Decl := Unit_Declaration_Node (Scop);
......
...@@ -427,7 +427,7 @@ package body Sem_Ch5 is ...@@ -427,7 +427,7 @@ package body Sem_Ch5 is
end if; end if;
Set_Etype (Ent, Standard_Void_Type); Set_Etype (Ent, Standard_Void_Type);
Set_Block_Node (Ent, N); Set_Block_Node (Ent, Identifier (N));
New_Scope (Ent); New_Scope (Ent);
if Present (Decls) then if Present (Decls) then
......
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