From a9c3a4975013a9c3e29c03af5a1d0772d81aba12 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 31 May 2021 16:32:14 +0200 Subject: [PATCH] [Ada] Fix violation of No_Implicit_Loops restriction for enumeration type gcc/ada/ * exp_imgv.adb: Add with and use clause for Restrict and Rident. (Build_Enumeration_Image_Tables): Do not generate the hash function if the No_Implicit_Loops restriction is active. --- gcc/ada/exp_imgv.adb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/gcc/ada/exp_imgv.adb b/gcc/ada/exp_imgv.adb index 6e17a5c..d2605fb 100644 --- a/gcc/ada/exp_imgv.adb +++ b/gcc/ada/exp_imgv.adb @@ -37,6 +37,8 @@ with Namet; use Namet; with Nmake; use Nmake; with Nlists; use Nlists; with Opt; use Opt; +with Restrict; use Restrict; +with Rident; use Rident; with Rtsfind; use Rtsfind; with Sem_Aux; use Sem_Aux; with Sem_Res; use Sem_Res; @@ -160,6 +162,8 @@ package body Exp_Imgv is Expression => Make_Aggregate (Loc, Expressions => V))); end Append_Table_To; + -- Start of Build_Enumeration_Image_Tables + begin -- Nothing to do for types other than a root enumeration type @@ -247,7 +251,7 @@ package body Exp_Imgv is Append_Table_To (Act, Eind, Nlit, Ityp, Ind); -- If the number of literals is not greater than Threshold, then we are - -- done. Otherwise we compute a (perfect) hash function for use by the + -- done. Otherwise we generate a (perfect) hash function for use by the -- Value attribute. if Nlit > Threshold then @@ -283,11 +287,12 @@ package body Exp_Imgv is -- If the unit where the type is declared is the main unit, and the -- number of literals is greater than Threshold_For_Size when we are - -- optimizing for size, and -gnatd_h is not specified, try to compute - -- the hash function. + -- optimizing for size, and the restriction No_Implicit_Loops is not + -- active, and -gnatd_h is not specified, generate the hash function. if In_Main_Unit and then (Optimize_Size = 0 or else Nlit > Threshold_For_Size) + and then not Restriction_Active (No_Implicit_Loops) and then not Debug_Flag_Underscore_H then declare -- 2.7.4