[Ada] Do not apply constraint checks on allocator with No_Initialization
authorEric Botcazou <ebotcazou@adacore.com>
Sun, 24 May 2020 13:23:42 +0000 (15:23 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 8 Jul 2020 14:55:55 +0000 (10:55 -0400)
gcc/ada/

* exp_ch4.adb (Expand_N_Allocator): In the subtype mark case, do
not apply constraint checks if the No_Initialization flag is set.

gcc/ada/exp_ch4.adb

index b40864fb5b478743e62ba2a97ebe12d64106ff44..cd71075461707e693c2d41c1610320e7da73bc06 100644 (file)
@@ -4847,10 +4847,11 @@ package body Exp_Ch4 is
          Temp_Type : Entity_Id;
 
       begin
-         --  Apply constraint checks against designated subtype (RM 4.8(10/2)).
+         --  Apply constraint checks against designated subtype (RM 4.8(10/2))
+         --  but ignore the expression if the No_Initialization flag is set.
          --  Discriminant checks will be generated by the expansion below.
 
-         if Is_Array_Type (Dtyp) then
+         if Is_Array_Type (Dtyp) and then not No_Initialization (N) then
             Apply_Constraint_Check (Expression (N), Dtyp, No_Sliding => True);
 
             Apply_Predicate_Check (Expression (N), Dtyp);