view gcc/testsuite/gnat.dg/opt8.ads @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 04ced10e8804
children
line wrap: on
line source

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;