aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2022-01-28 10:24:04 +0100
committerPierre-Marie de Rodat <derodat@adacore.com>2022-05-11 08:53:18 +0000
commitc8482b1e77a0008986c4019d0d69993f80f03775 (patch)
tree067d9ed1beda8ddd5340981995b67979a96aa3dc
parentc51ad37e2d79132bb78305f90322403303cf17c3 (diff)
downloadgcc-c8482b1e77a0008986c4019d0d69993f80f03775.zip
gcc-c8482b1e77a0008986c4019d0d69993f80f03775.tar.gz
gcc-c8482b1e77a0008986c4019d0d69993f80f03775.tar.bz2
[Ada] Add guard for making only legal labels unreachable
An entity flag Reachable now only applies to E_Label entities. We had an appropriate guard for setting this flag, but not for clearing. 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.adb4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb
index 81767d8..f8e6d0c 100644
--- a/gcc/ada/sem_ch5.adb
+++ b/gcc/ada/sem_ch5.adb
@@ -4383,7 +4383,9 @@ package body Sem_Ch5 is
S := First (L);
while Present (S) loop
- if Nkind (S) = N_Label then
+ if Nkind (S) = N_Label
+ and then Ekind (Entity (Identifier (S))) = E_Label
+ then
Set_Reachable (Entity (Identifier (S)), False);
end if;