source: Deliverables/D2.2/8051/src/LTL/LTLGraph.ml @ 2169

Last change on this file since 2169 was 1580, checked in by tranquil, 9 years ago

implemented constant propagation in LTL
cleaned up translations in optimizations, a new module for translations is available

File size: 1.7 KB
Line 
1type node = Label.t
2
3type statement = LTL.statement
4
5module NodeSet = Label.Set
6module NodeMap = Label.Map
7
8open LTL
9
10type t = graph
11
12(** Successors of a statement *)
13let successors (stmt : statement) =
14  match stmt with
15  | St_return _  ->
16    []
17  | St_skip l
18  | St_clear_carry l
19  | St_set_carry l
20  | St_pop l
21  | St_push l
22  | St_comment (_, l)
23  | St_addr (_, l)
24  | St_cost (_, l)
25  | St_ind_0 (_, l)
26  | St_ind_inc (_, l)
27  | St_from_acc (_, l)
28  | St_to_acc (_, l)
29  | St_opaccs (_, l)
30  | St_op1 (_, l)
31  | St_op2 (_, _, l)
32  | St_int (_, _, l)
33  | St_load l
34  | St_store l
35  | St_call_ptr l
36  | St_call_id (_, l) ->
37    [l]
38  | St_condacc (l1, l2) ->
39    [l1 ; l2]
40
41let skip l = St_skip l
42
43let fill_succs stmt succs = match stmt, succs with
44  | St_return _ as s, [] -> s
45  | St_skip _, [l] -> St_skip l
46  | St_clear_carry _, [l] -> St_clear_carry l
47  | St_set_carry _, [l] -> St_set_carry l
48  | St_pop _, [l] -> St_pop l
49  | St_push _, [l] -> St_push l
50  | St_comment (s, _), [l] -> St_comment (s, l)
51  | St_addr (i, _), [l] -> St_addr (i, l)
52  | St_cost (c, _), [l] -> St_cost (c, l)
53  | St_ind_0 (i, _), [l] -> St_ind_0 (i, l)
54  | St_ind_inc (i, _), [l] -> St_ind_inc (i, l)
55  | St_from_acc (r, _), [l] -> St_from_acc (r, l)
56  | St_to_acc (r, _), [l] -> St_to_acc (r, l)
57  | St_opaccs (o, _), [l] -> St_opaccs (o, l)
58  | St_op1 (o, _), [l] -> St_op1 (o, l)
59  | St_op2 (o, r, _), [l] -> St_op2 (o, r, l)
60  | St_int (r, k, _), [l] -> St_int (r, k, l)
61  | St_load _, [l] -> St_load l
62  | St_store _, [l] -> St_store l
63  | St_call_ptr _, [l] -> St_call_ptr l
64  | St_call_id (f, _), [l] -> St_call_id (f, l)
65  | St_condacc (_, _), [l1 ; l2] -> St_condacc (l1, l2)
66  | _ -> invalid_arg "fill_succs: statement and successors do not match"
Note: See TracBrowser for help on using the repository browser.