diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2022-01-28 18:12:18 +0100 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2022-05-11 08:53:19 +0000 |
commit | 470fff3d8e48ede98f0a74a1beb9eafc7452f4b4 (patch) | |
tree | 9f944bd85b6e1bcb4bf7d99b628a624e75f8643b | |
parent | fd932b612c3873b930b2e410fb5490a6b5252ccb (diff) | |
download | gcc-470fff3d8e48ede98f0a74a1beb9eafc7452f4b4.zip gcc-470fff3d8e48ede98f0a74a1beb9eafc7452f4b4.tar.gz gcc-470fff3d8e48ede98f0a74a1beb9eafc7452f4b4.tar.bz2 |
[Ada] Reset Reachable field when mutating label into loop entity
An entity flag Reachable now only applies to E_Label entities and needs
to be explicitly reset when mutating labels into loop entities. Only
needed to prevent cascaded errors when compiling a malicious ACATS test
with -gnatq (try semantics, even if parse errors).
Cleanup related to detection of uninitialized scalars with GOTO
statements.
gcc/ada/
* sem_ch5.adb (Analyze_Statements): Only clear Reachable flag on
proper label entities.
-rw-r--r-- | gcc/ada/sem_ch5.adb | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb index f8e6d0c..a0f2206 100644 --- a/gcc/ada/sem_ch5.adb +++ b/gcc/ada/sem_ch5.adb @@ -4012,6 +4012,7 @@ package body Sem_Ch5 is if Ekind (Ent) = E_Label then Reinit_Field_To_Zero (Ent, F_Enclosing_Scope); + Reinit_Field_To_Zero (Ent, F_Reachable); Mutate_Ekind (Ent, E_Loop); if Nkind (Parent (Ent)) = N_Implicit_Label_Declaration then |