aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBob Duff <duff@adacore.com>2020-10-22 17:49:07 -0400
committerPierre-Marie de Rodat <derodat@adacore.com>2020-11-26 03:39:46 -0500
commitccd05f6c8fd4c90e6c4cd1f683991fe498aef74c (patch)
treeff1f3e87d6c54434077ae33c2f0531e492df0fb6 /gcc
parent2015a575b773104f277329a9759c63b10ab09966 (diff)
downloadgcc-ccd05f6c8fd4c90e6c4cd1f683991fe498aef74c.zip
gcc-ccd05f6c8fd4c90e6c4cd1f683991fe498aef74c.tar.gz
gcc-ccd05f6c8fd4c90e6c4cd1f683991fe498aef74c.tar.bz2
[Ada] Pass base type to Set_Has_Own_Invariants
gcc/ada/ * freeze.adb (Freeze_Array_Type): Remove propagation of Has_Own_Invariants to the first subtype. This is a no-op, because the current (incorrect) version of Has_Own_Invariants calls Base_Type. * sem_prag.adb, sem_util.adb: Pass the base type to Set_Has_Own_Invariants.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/freeze.adb7
-rw-r--r--gcc/ada/sem_prag.adb2
-rw-r--r--gcc/ada/sem_util.adb2
3 files changed, 2 insertions, 9 deletions
diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb
index 19f4385..8183252 100644
--- a/gcc/ada/freeze.adb
+++ b/gcc/ada/freeze.adb
@@ -2594,13 +2594,6 @@ package body Freeze is
and then not GNATprove_Mode
then
Set_Has_Own_Invariants (Arr);
-
- -- The array type is an implementation base type. Propagate the
- -- same property to the first subtype.
-
- if Is_Itype (Arr) then
- Set_Has_Own_Invariants (First_Subtype (Arr));
- end if;
end if;
-- Warn for pragma Pack overriding foreign convention
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index a54ece6..9c57ee3 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -18533,7 +18533,7 @@ package body Sem_Prag is
-- The pragma defines a type-specific invariant, the type is said
-- to have invariants of its "own".
- Set_Has_Own_Invariants (Typ);
+ Set_Has_Own_Invariants (Base_Type (Typ));
-- If the invariant is class-wide, then it can be inherited by
-- derived or interface implementing types. The type is said to
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index 4f2df8e..6875e47 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -26262,7 +26262,7 @@ package body Sem_Util is
end if;
if Has_Own_Invariants (From_Typ) then
- Set_Has_Own_Invariants (Typ);
+ Set_Has_Own_Invariants (Base_Type (Typ));
end if;
if Present (Full_IP) and then No (Invariant_Procedure (Typ)) then