[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.
This commit is contained in:
Piotr Trojanek 2022-01-28 18:12:18 +01:00 committed by Pierre-Marie de Rodat
parent fd932b612c
commit 470fff3d8e

View File

@ -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