summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gnat.dg/opt8.ads
blob: 57d84a2935d50110ceba0b9a88a26ac3f3c8653c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package Opt8 is

    type Value_Number_Kind is
      (Int_Literal_VN,
       Selected_Address_VN,
       Membership_VN,
       Initial_External_Kappa_VN,
       Aliased_Kappa_VN,
       Phi_As_Kappa_VN,
       Multi_Target_Call_Kappa_VN,
       Final_Value_Of_Seq_Kappa_VN,
       Block_Kappa_VN);

    subtype Kappa_VN is Value_Number_Kind
    range Initial_External_Kappa_VN .. Block_Kappa_VN;

    type Value_Number_Id is new Positive;

    type Kappa_Component_Rec;

    type Kappa_Component_Ptr is access Kappa_Component_Rec;

    type Kappa_Component_Rec is record
        Content_VN : Value_Number_Id;
        Next : Kappa_Component_Ptr;
    end record;

    type Value_Number_Rec(Kind : Value_Number_Kind) is record
        Id: Value_Number_Id;
        case Kind is
            when Int_Literal_VN =>
                Int_Val : Integer;
            when Kappa_VN =>
                Old_Value : Kappa_Component_Rec;
                Possible_New_Values : Kappa_Component_Ptr;
                Use_Default : Boolean;
            when Others =>
                null;
        end case;
    end record;

    type Value_Number is access all Value_Number_Rec;

    function VN_Complexity (Val : Value_Number; N : Natural) return Natural;

end Opt8;