OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gnat.dg/] [opt8.adb] - Blame information for rev 696

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 696 jeremybenn
-- { dg-do compile }
2
-- { dg-options "-O2" }
3
 
4
with Opt8_Pkg;
5
 
6
package body Opt8 is
7
 
8
    function Content_Value (Rec : Kappa_Component_Rec)
9
        return Value_Number is
10
    begin
11
        return Opt8_Pkg.Id_To_VN (Rec.Content_VN);
12
    end;
13
 
14
    function Possible_Values_Count (V: Kappa_Component_Ptr) return Natural is
15
        Result : Natural := 0;
16
        List : Kappa_Component_Ptr := V;
17
    begin
18
        while List /= null loop
19
            Result := Result +1;
20
            List := List.Next;
21
        end loop;
22
        return Result;
23
    end;
24
 
25
    function VN_Complexity (Val : Value_Number; N : Natural)
26
        return Natural is
27
        Result : Natural := 0;
28
      begin
29
        case Val.Kind is
30
            when Membership_VN =>
31
                Result :=  VN_Complexity(Val, N);
32
            when Selected_Address_VN =>
33
                Result :=  VN_Complexity(Val, N) + 1;
34
            when Kappa_VN =>
35
                Result := Possible_Values_Count(Val.Possible_New_Values)*3;
36
                if Val.Use_Default then
37
                    if Result < N then
38
                      Result := Result +
39
                          VN_Complexity(Content_Value (Val.old_Value), N);
40
                    end if;
41
                end if;
42
            when others =>
43
              Result := 0;
44
          end case;
45
        return Result;
46
    end;
47
 
48
end Opt8;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.