@@ -16,6 +16,7 @@ Date: August 2013
16
16
17
17
#include < cassert>
18
18
19
+ #include < util/container_utils.h>
19
20
#include < util/json.h>
20
21
#include < util/json_expr.h>
21
22
@@ -26,36 +27,16 @@ bool dep_graph_domaint::merge(
26
27
goto_programt::const_targett from,
27
28
goto_programt::const_targett to)
28
29
{
29
- bool changed=has_values.is_false ();
30
- has_values=tvt::unknown ();
30
+ bool changed = false ;
31
31
32
- depst::iterator it=control_deps.begin ();
33
- for (const auto &c_dep : src.control_deps )
32
+ if (is_bottom ())
34
33
{
35
- while (it!=control_deps.end () && *it<c_dep)
36
- ++it;
37
- if (it==control_deps.end () || c_dep<*it)
38
- {
39
- control_deps.insert (it, c_dep);
40
- changed=true ;
41
- }
42
- else if (it!=control_deps.end ())
43
- ++it;
34
+ has_values = tvt::unknown ();
35
+ data_deps = src.data_deps ;
36
+ changed = true ;
44
37
}
45
38
46
- it=data_deps.begin ();
47
- for (const auto &d_dep : src.data_deps )
48
- {
49
- while (it!=data_deps.end () && *it<d_dep)
50
- ++it;
51
- if (it==data_deps.end () || d_dep<*it)
52
- {
53
- data_deps.insert (it, d_dep);
54
- changed=true ;
55
- }
56
- else if (it!=data_deps.end ())
57
- ++it;
58
- }
39
+ changed |= util_inplace_set_union (control_deps, src.control_deps );
59
40
60
41
return changed;
61
42
}
@@ -208,17 +189,7 @@ void dep_graph_domaint::transform(
208
189
dynamic_cast <dep_graph_domaint*>(&(dep_graph->get_state (next)));
209
190
assert (s!=nullptr );
210
191
211
- depst::iterator it=s->control_deps .begin ();
212
- for (const auto &c_dep : control_deps)
213
- {
214
- while (it!=s->control_deps .end () && *it<c_dep)
215
- ++it;
216
- if (it==s->control_deps .end () || c_dep<*it)
217
- s->control_deps .insert (it, c_dep);
218
- else if (it!=s->control_deps .end ())
219
- ++it;
220
- }
221
-
192
+ util_inplace_set_union (s->control_deps , control_deps);
222
193
control_deps.clear ();
223
194
}
224
195
}
0 commit comments