From 95aeda79481084e8b7f3900958236e331c7e1903 Mon Sep 17 00:00:00 2001 From: Gary Dismukes Date: Thu, 13 Oct 2011 10:39:15 +0000 Subject: [PATCH] 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 * 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 --- gcc/ada/ChangeLog | 8 ++++++++ gcc/ada/exp_ch5.adb | 14 ++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 61da1c3f507..d6c30b39cfa 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,11 @@ +2011-10-13 Gary Dismukes + + * 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 * exp_ch6.ads (BIP_Storage_Pool): New "extra implicit parameter" diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb index 291d68e7b3e..75aa2a5ffa2 100644 --- a/gcc/ada/exp_ch5.adb +++ b/gcc/ada/exp_ch5.adb @@ -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 -- 2.30.2