]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Spurious predicate check at default initialization
authorJavier Miranda <miranda@adacore.com>
Tue, 2 Sep 2025 12:15:45 +0000 (12:15 +0000)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Tue, 23 Sep 2025 13:01:12 +0000 (15:01 +0200)
For an object created by an object_declaration with no explicit
initialization expression, if the type of the object is a record
type (or a private record type) with no components and a dynamic
predicate, then no predicate check must be performed at runtime
(RM 3.2.4(31/5)).

gcc/ada/ChangeLog:

* sem_util.adb (Is_Partially_Initialized_Type): Return False
for record types with no components.

gcc/ada/sem_util.adb

index ff2b2351937566eb0c415617f945c0e6d6282792..e6c183c5f9c3cc4256ae8e52fa05de3ba135c6ce 100644 (file)
@@ -20240,7 +20240,12 @@ package body Sem_Util is
          elsif Is_Tagged_Type (Typ) then
             return True;
 
-         --  Case of nondiscriminated record
+         --  Case of record type with no components
+
+         elsif No (First_Component (Typ)) then
+            return False;
+
+         --  Case of record type with components
 
          else
             declare