The two flags apply to base types only like Has_Own_Invariants.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* sem_util.adb (Propagate_DIC_Attributes): Add ??? comment.
(Propagate_Invariant_Attributes): Likewise. Propagate the
Has_Inheritable_Invariants and Has_Inherited_Invariants to
the base type of the target type.
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -27312,7 +27312,7 @@ package body Sem_Util is
-- The setting of the attributes is intentionally conservative. This
-- prevents accidental clobbering of enabled attributes. We need to
-- call Base_Type twice, because it is sometimes not set to an actual
- -- base type.
+ -- base type???
if Has_Inherited_DIC (From_Typ) then
Set_Has_Inherited_DIC (Base_Type (Base_Type (Typ)));
@@ -27362,14 +27362,14 @@ package body Sem_Util is
-- The setting of the attributes is intentionally conservative. This
-- prevents accidental clobbering of enabled attributes. We need to
-- call Base_Type twice, because it is sometimes not set to an actual
- -- base type.
+ -- base type???
if Has_Inheritable_Invariants (From_Typ) then
- Set_Has_Inheritable_Invariants (Typ);
+ Set_Has_Inheritable_Invariants (Base_Type (Base_Type (Typ)));
end if;
if Has_Inherited_Invariants (From_Typ) then
- Set_Has_Inherited_Invariants (Typ);
+ Set_Has_Inherited_Invariants (Base_Type (Base_Type (Typ)));
end if;
if Has_Own_Invariants (From_Typ) then