[Ada] Add guard for making only legal labels unreachable
authorPiotr Trojanek <trojanek@adacore.com>
Fri, 28 Jan 2022 09:24:04 +0000 (10:24 +0100)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 11 May 2022 08:53:18 +0000 (08:53 +0000)
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.

gcc/ada/sem_ch5.adb

index 81767d8..f8e6d0c 100644 (file)
@@ -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;