Due to the installation order of packages within a context clause it is possible to create circularities within the Prev_Use_Clause clain. This patch corrects this issue by identifying this case through the use of an extra check.
Tested on x86_64-pc-linux-gnu, committed on trunk 2017-09-29 Justin Squirek <squi...@adacore.com> * sem_ch8.adb (Analyze_Use_Package): Add sanity check to avoid circularities in the use-clause chain.
Index: sem_ch8.adb =================================================================== --- sem_ch8.adb (revision 253285) +++ sem_ch8.adb (working copy) @@ -3782,9 +3782,10 @@ -- before setting its previous use clause. if Ekind (Pack) = E_Package - and then Present (Current_Use_Clause (Pack)) - and then Current_Use_Clause (Pack) /= N - and then No (Prev_Use_Clause (N)) + and then Present (Current_Use_Clause (Pack)) + and then Current_Use_Clause (Pack) /= N + and then No (Prev_Use_Clause (N)) + and then Prev_Use_Clause (Current_Use_Clause (Pack)) /= N then Set_Prev_Use_Clause (N, Current_Use_Clause (Pack)); end if;