-- PR debug/80321 -- { dg-do compile } -- { dg-options "-O2 -g" } with Debug10_Pkg; use Debug10_Pkg; procedure Debug10 (T : Entity_Id) is procedure Inner (E : Entity_Id); pragma Inline (Inner); procedure Inner (E : Entity_Id) is begin if E /= Empty and then not Nodes (E + 3).Flag16 then Debug10 (E); end if; end Inner; function Ekind (E : Entity_Id) return Entity_Kind is begin return N_To_E (Nodes (E + 1).Nkind); end Ekind; begin if T = Empty then return; end if; Nodes (T + 3).Flag16 := True; if Ekind (T) in Object_Kind then Inner (T); elsif Ekind (T) in Type_Kind then Inner (T); if Ekind (T) in Record_Kind then if Ekind (T) = E_Class_Wide_Subtype then Inner (T); end if; elsif Ekind (T) in Array_Kind then Inner (T); elsif Ekind (T) in Access_Kind then Inner (T); elsif Ekind (T) in Scalar_Kind then if My_Scalar_Range (T) /= Empty and then My_Test (My_Scalar_Range (T)) then if My_Is_Entity_Name (T) then Inner (T); end if; if My_Is_Entity_Name (T) then Inner (T); end if; end if; end if; end if; end;