Commit 95aeda79 by Gary Dismukes Committed by Arnaud Charlet

exp_ch5.adb (Expand_N_Loop_Statement): For the transformation of a for loop for…

exp_ch5.adb (Expand_N_Loop_Statement): For the transformation of a for loop for an enumeration type with an...

2011-10-13  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch5.adb (Expand_N_Loop_Statement): For the transformation
	of a for loop for an enumeration type with an enumeration rep
	clause, which involves moving the original loop parameter into
	a nested block, the loop parameter's entity must be removed from
	the entity list of the loop scope.

From-SVN: r179904
parent 200b7162
2011-10-13 Gary Dismukes <dismukes@adacore.com>
* exp_ch5.adb (Expand_N_Loop_Statement): For the transformation
of a for loop for an enumeration type with an enumeration rep
clause, which involves moving the original loop parameter into
a nested block, the loop parameter's entity must be removed from
the entity list of the loop scope.
2011-10-13 Bob Duff <duff@adacore.com>
* exp_ch6.ads (BIP_Storage_Pool): New "extra implicit parameter"
......
......@@ -3458,6 +3458,20 @@ package body Exp_Ch5 is
Statements => Statements (N)))),
End_Label => End_Label (N)));
-- The loop parameter's entity must be removed from the loop
-- scope's entity list, since itw will now be located in the
-- new block scope. Any other entities already associated with
-- the loop scope, such as the loop parameter's subtype, will
-- remain there.
pragma Assert (First_Entity (Scope (Loop_Id)) = Loop_Id);
Set_First_Entity (Scope (Loop_Id), Next_Entity (Loop_Id));
if Last_Entity (Scope (Loop_Id)) = Loop_Id then
Set_Last_Entity (Scope (Loop_Id), Empty);
end if;
Analyze (N);
-- Nothing to do with other cases of for loops
......
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