From: Yannick Moy Date: Thu, 8 Feb 2024 10:47:20 +0000 (+0100) Subject: ada: Fix ghost policy in use for generic instantiation X-Git-Tag: basepoints/gcc-16~9108 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=20dfaae2d1ba4749db13792105a32c5d8ef422e3;p=thirdparty%2Fgcc.git ada: Fix ghost policy in use for generic instantiation The Ghost assertion policy relevant for analyzing a generic instantiation is the Ghost policy at the point of instantiation, not the one applicable for the generic itself. gcc/ada/ * ghost.adb (Mark_And_Set_Ghost_Instantiation): Fix the current Ghost policy for the instantiation. --- diff --git a/gcc/ada/ghost.adb b/gcc/ada/ghost.adb index 14951a031d9..677089039e8 100644 --- a/gcc/ada/ghost.adb +++ b/gcc/ada/ghost.adb @@ -1734,13 +1734,17 @@ package body Ghost is elsif Ghost_Mode = Ignore then Policy := Name_Ignore; - -- Inherit the "ghostness" of the generic unit + -- Inherit the "ghostness" of the generic unit, but the current Ghost + -- policy is the relevant one for the instantiation. - elsif Is_Checked_Ghost_Entity (Gen_Id) then - Policy := Name_Check; + elsif Is_Checked_Ghost_Entity (Gen_Id) + or else Is_Ignored_Ghost_Entity (Gen_Id) + then + Policy := Policy_In_Effect (Name_Ghost); - elsif Is_Ignored_Ghost_Entity (Gen_Id) then - Policy := Name_Ignore; + if Policy = No_Name then + Policy := Name_Ignore; + end if; end if; -- Mark the instantiation as Ghost