From 1075946d061f01d767cf42f437be99aefe02ea97 Mon Sep 17 00:00:00 2001 From: Ghjuvan Lacambre Date: Wed, 13 Jan 2021 18:03:15 +0100 Subject: [PATCH] [Ada] Make Is_OK_Static_Subtype use Is_Static_Subtype gcc/ada/ * sem_eval.adb (Is_OK_Static_Subtype): Call Is_Static_Subtype, remove redundant checks. --- gcc/ada/sem_eval.adb | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb index 9b272d258b4b..79310152f642 100644 --- a/gcc/ada/sem_eval.adb +++ b/gcc/ada/sem_eval.adb @@ -5549,23 +5549,16 @@ package body Sem_Eval is return False; end if; - Anc_Subt := Ancestor_Subtype (Typ); - - if Anc_Subt = Empty then - Anc_Subt := Base_T; - end if; + -- Then, check if the subtype is strictly static. This takes care of + -- checking for generics and predicates. - if Is_Generic_Type (Root_Type (Base_T)) - or else Is_Generic_Actual_Type (Base_T) - then - return False; - - elsif Has_Dynamic_Predicate_Aspect (Typ) then + if not Is_Static_Subtype (Typ) then return False; + end if; -- String types - elsif Is_String_Type (Typ) then + if Is_String_Type (Typ) then return Ekind (Typ) = E_String_Literal_Subtype or else @@ -5579,6 +5572,12 @@ package body Sem_Eval is return True; else + Anc_Subt := Ancestor_Subtype (Typ); + + if No (Anc_Subt) then + Anc_Subt := Base_T; + end if; + -- Scalar_Range (Typ) might be an N_Subtype_Indication, so use -- Get_Type_{Low,High}_Bound. -- 2.47.2