]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Fix glitch in handling of Atomic_Components on generic formal type
authorPiotr Trojanek <trojanek@adacore.com>
Mon, 17 Mar 2025 11:57:26 +0000 (12:57 +0100)
committerEric Botcazou <ebotcazou@adacore.com>
Mon, 9 Jun 2025 08:23:34 +0000 (10:23 +0200)
In Ada 2022 aspects Atomic_Components and Volatile_Components can be specified
for a formal array type, but then they need to be set on the base type entity.
Otherwise we get an assertion failure in debug build and wrong legality errors
in production builds.

gcc/ada/ChangeLog:

* sem_prag.adb (Analyze_Pragma): If pragmas apply to a formal array
type, then set the flags on the base type.

gcc/ada/sem_prag.adb

index 621edc7725d8ba6ef452b86c7b16f661d97fc080..17805c96fed34a1f8719a271425117acf245bf4b 100644 (file)
@@ -14708,7 +14708,9 @@ package body Sem_Prag is
             then
                --  The flag is set on the base type, or on the object
 
-               if Nkind (D) = N_Full_Type_Declaration then
+               if Nkind (D) in N_Full_Type_Declaration
+                             | N_Formal_Type_Declaration
+               then
                   E := Base_Type (E);
                end if;