Skip to content

Commit 0ccea5d

Browse files
committed
minor updates
1 parent 3421e99 commit 0ccea5d

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

plugins/optimization/optimization_data.ml

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -71,19 +71,22 @@ let remove_dead_edges g dead_jmps =
7171
then G.Edge.remove edge g
7272
else g)
7373

74-
let dead_blks sub g =
74+
let dead_blks g =
7575
let module G = Graphs.Tid in
76-
Term.to_sequence blk_t sub |>
77-
Seq.fold ~init:(Set.empty (module Tid)) ~f:(fun deads b ->
78-
if Graphlib.is_reachable (module G) g G.start (Term.tid b)
79-
then deads
80-
else Set.add deads (Term.tid b))
76+
fst @@
77+
Graphlib.depth_first_search (module G) g
78+
~init:(Set.empty (module Tid), false)
79+
~start_tree:(fun node (deads, _) ->
80+
deads, Tid.equal node G.start)
81+
~enter_node:(fun _ node (deads, is_reachable) ->
82+
if is_reachable then deads, is_reachable
83+
else Set.add deads node, is_reachable)
8184

8285
let find_unreachable sub t =
8386
let dead_jmps = dead_jmps sub in
8487
let dead_blks =
8588
remove_dead_edges (Sub.to_graph sub) dead_jmps |>
86-
dead_blks sub in
89+
dead_blks in
8790
{t with deads = t.deads ++ dead_jmps ++ dead_blks }
8891

8992
let update_def updates d =
@@ -105,22 +108,22 @@ let update sub {updates} =
105108
Term.map def_t b ~f:(update_def updates) |>
106109
Term.map jmp_t ~f:(update_jmp updates))
107110

108-
let map_alive deads cls ?(f=ident) x =
111+
let filter_map_alive deads cls ?(f=ident) x =
109112
Term.filter_map cls x ~f:(fun t ->
110113
if Set.mem deads (Term.tid t) then None
111114
else Some (f t))
112115

113116
let remove_dead_code sub {deads} =
114117
let update_blk b =
115-
map_alive deads def_t b |>
116-
map_alive deads jmp_t in
117-
map_alive deads blk_t sub ~f:update_blk
118+
filter_map_alive deads def_t b |>
119+
filter_map_alive deads jmp_t in
120+
filter_map_alive deads blk_t sub ~f:update_blk
118121

119122
let apply sub {deads; updates} =
120123
let update_blk b =
121-
map_alive deads def_t b ~f:(update_def updates) |>
122-
map_alive deads jmp_t ~f:(update_jmp updates) in
123-
map_alive deads blk_t sub ~f:update_blk
124+
filter_map_alive deads def_t b ~f:(update_def updates) |>
125+
filter_map_alive deads jmp_t ~f:(update_jmp updates) in
126+
filter_map_alive deads blk_t sub ~f:update_blk
124127

125128
include Data.Make(struct
126129
type nonrec t = t

plugins/optimization/optimization_main.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ let digest_of_sub sub level =
150150
let digest = Set.fold addrs ~init:digest ~f:(fun d a ->
151151
Digest.add d "%a" Addr.pp a) in
152152
let digest = Digest.add digest "%s" (Sub.name sub) in
153-
Digest.add digest "%s" (string_of_int level)
153+
Digest.add digest "%d" level
154154

155155
let run level proj =
156156
let arch = Project.arch proj in

0 commit comments

Comments
 (0)