From e5802d60130bd804663559471f9c5f3561dfab4d Mon Sep 17 00:00:00 2001 From: Yannick Moy Date: Thu, 16 Jun 2022 14:14:56 +0200 Subject: [PATCH] [Ada] Deferred constant considered as not preelaborable Fix detection of non-preelaborable constructs for checking SPARK elaboration rules, which was tagging deferred constant declarations as not preelaborable. gcc/ada/ * sem_util.adb (Is_Non_Preelaborable_Construct): Fix for deferred constants. --- gcc/ada/sem_util.adb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 942a77a34f2..7b7566d96c7 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -18952,8 +18952,9 @@ package body Sem_Util is if Has_Init_Expression (Nod) then Visit (Expression (Nod)); - elsif not Has_Preelaborable_Initialization - (Etype (Defining_Entity (Nod))) + elsif not Constant_Present (Nod) + and then not Has_Preelaborable_Initialization + (Etype (Defining_Entity (Nod))) then raise Non_Preelaborable; end if; -- 2.47.2