generic.texi (ANNOTATE_EXPR): Document 3rd operand.
[gcc.git] / gcc / testsuite / gnat.dg / debug10.adb
1 -- PR debug/80321
2
3 -- { dg-do compile }
4 -- { dg-options "-O2 -g" }
5
6 with Debug10_Pkg; use Debug10_Pkg;
7
8 procedure Debug10 (T : Entity_Id) is
9
10 procedure Inner (E : Entity_Id);
11 pragma Inline (Inner);
12
13 procedure Inner (E : Entity_Id) is
14 begin
15 if E /= Empty
16 and then not Nodes (E + 3).Flag16
17 then
18 Debug10 (E);
19 end if;
20 end Inner;
21
22 function Ekind (E : Entity_Id) return Entity_Kind is
23 begin
24 return N_To_E (Nodes (E + 1).Nkind);
25 end Ekind;
26
27 begin
28
29 if T = Empty then
30 return;
31 end if;
32
33 Nodes (T + 3).Flag16 := True;
34
35 if Ekind (T) in Object_Kind then
36 Inner (T);
37
38 elsif Ekind (T) in Type_Kind then
39 Inner (T);
40
41 if Ekind (T) in Record_Kind then
42
43 if Ekind (T) = E_Class_Wide_Subtype then
44 Inner (T);
45 end if;
46
47 elsif Ekind (T) in Array_Kind then
48 Inner (T);
49
50 elsif Ekind (T) in Access_Kind then
51 Inner (T);
52
53 elsif Ekind (T) in Scalar_Kind then
54
55 if My_Scalar_Range (T) /= Empty
56 and then My_Test (My_Scalar_Range (T))
57 then
58 if My_Is_Entity_Name (T) then
59 Inner (T);
60 end if;
61
62 if My_Is_Entity_Name (T) then
63 Inner (T);
64 end if;
65 end if;
66 end if;
67 end if;
68 end;