From 651c9c1e4b1bd2369ced718599ad1ac370aa37cd Mon Sep 17 00:00:00 2001 From: Gary Dismukes Date: Mon, 12 Aug 2019 08:59:58 +0000 Subject: [Ada] Suppress_Initialization not respected for private subtypes The compiler fails to suppress initialization on a variable of a subtype of a private type (such as System.Address) even though the subtype has aspect Suppress_Initialization. This can lead to errors on object declarations specified with Thread_Local_Storage when Initialize_Scalars is applied (as well as leading to default initialization when it shouldn't). 2019-08-12 Gary Dismukes gcc/ada/ * sem_prag.adb (Analyze_Pragma, Pragma_Suppress_Initialization): For private types, set the Suppress_Initialization flag on the Full_View of the entity rather than the entity's base type. gcc/testsuite/ * gnat.dg/suppress_initialization2.adb, gnat.dg/suppress_initialization2.ads: New testcase. From-SVN: r274293 --- gcc/ada/ChangeLog | 6 ++++++ gcc/ada/sem_prag.adb | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'gcc/ada') diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 78d78cc..4e76edf 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2019-08-12 Gary Dismukes + + * sem_prag.adb (Analyze_Pragma, Pragma_Suppress_Initialization): + For private types, set the Suppress_Initialization flag on the + Full_View of the entity rather than the entity's base type. + 2019-08-12 Yannick Moy * aspects.adb, aspects.ads (Aspect_No_Caching): New aspect. diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 599ac4c..30b6088 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -24169,7 +24169,7 @@ package body Sem_Prag is Error_Pragma_Arg ("argument of pragma% cannot be an incomplete type", Arg1); else - Set_Suppress_Initialization (Full_View (Base_Type (E))); + Set_Suppress_Initialization (Full_View (E)); end if; -- For first subtype, set flag on base type -- cgit v1.1