When the declaration of the loop entity of an Ada-2012-style array iterator is rewritten as a renaming of the indexed array, debug info was not being generated for the renaming, preventing display of the entity (gdb generates a "no definition in current context" message). The loop entity of such a renaming is now marked as needing debug info.
Tested on x86_64-pc-linux-gnu, committed on trunk 2012-03-30 Gary Dismukes <dismu...@adacore.com> * exp_ch5.adb (Expand_Iterator_Loop_Over_Array): For the case of a loop entity which is rewritten as a renaming of the indexed array, explicitly mark the entity as needing debug info so that Materialize entity will be set later by Debug_Renaming_Declaration when the renaming is expanded.
Index: exp_ch5.adb =================================================================== --- exp_ch5.adb (revision 185995) +++ exp_ch5.adb (working copy) @@ -3303,6 +3303,14 @@ New_Reference_To (Component_Type (Array_Typ), Loc), Name => Ind_Comp)); + -- Mark the loop variable as needing debug info, so that expansion + -- of the renaming will result in Materialize_Entity getting set via + -- Debug_Renaming_Declaration. (This setting is needed here because + -- the setting in Freeze_Entity comes after the expansion, which is + -- too late. ???) + + Set_Debug_Info_Needed (Id); + -- for Index in Array loop -- This case utilizes the already given iterator name