[COMMITTED] ada: Default_Component_Value trumps Initialize/Normalize_Scalars

Marc Poulhiès poulhies@adacore.com
Mon May 29 08:29:16 GMT 2023


From: Steve Baird <baird@adacore.com>

If the Default_Component_Value aspect is specified for an array type, then
specifying Initialize_Scalars or Normalize_Scalars should have no effect
on the default initialization of an object of the array type.

gcc/ada/

	* exp_ch3.adb
	(Expand_N_Object_Declaration.Default_Initialize_Object): Add test for
	specified Default_Component_Value aspect when deciding whether
	either Initialize_Scalars or Normalize_Scalars impacts default
	initialization of an array object.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/exp_ch3.adb | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb
index e23a3fde15c..5f651bacafb 100644
--- a/gcc/ada/exp_ch3.adb
+++ b/gcc/ada/exp_ch3.adb
@@ -6897,6 +6897,12 @@ package body Exp_Ch3 is
 
                  and then not Has_Predicates (Component_Type (Typ))
 
+                 --  Array default component value takes precedence over
+                 --  Init_Or_Norm_Scalars.
+
+                 and then No (Find_Aspect (Typ,
+                                           Aspect_Default_Component_Value))
+
                  --  The component type must have a single initialization value
 
                  and then Simple_Initialization_OK (Component_Type (Typ))
-- 
2.40.0



More information about the Gcc-patches mailing list