7
7
\*******************************************************************/
8
8
9
9
#include < sstream>
10
+ #include < cassert>
10
11
11
12
#include < util/arith_tools.h>
12
13
@@ -28,21 +29,22 @@ static void build_ssa_identifier_rec(
28
29
const exprt &expr,
29
30
const irep_idt &l0,
30
31
const irep_idt &l1,
32
+ const irep_idt &l2,
31
33
std::ostream &os)
32
34
{
33
35
if (expr.id ()==ID_member)
34
36
{
35
37
const member_exprt &member=to_member_expr (expr);
36
38
37
- build_ssa_identifier_rec (member.struct_op (), l0, l1, os);
39
+ build_ssa_identifier_rec (member.struct_op (), l0, l1, l2, os);
38
40
39
41
os << ' .' << member.get_component_name ();
40
42
}
41
43
else if (expr.id ()==ID_index)
42
44
{
43
45
const index_exprt &index=to_index_expr (expr);
44
46
45
- build_ssa_identifier_rec (index.array (), l0, l1, os);
47
+ build_ssa_identifier_rec (index.array (), l0, l1, l2, os);
46
48
47
49
mp_integer idx;
48
50
if (to_integer (to_constant_expr (index.index ()), idx))
@@ -59,14 +61,17 @@ static void build_ssa_identifier_rec(
59
61
60
62
if (!l1.empty ())
61
63
os << ' @' << l1;
64
+
65
+ if (!l2.empty ())
66
+ os << ' #' << l2;
62
67
}
63
68
else
64
69
assert (false );
65
70
}
66
71
67
72
/* ******************************************************************\
68
73
69
- Function: ssa_exprt::update_identifier
74
+ Function: ssa_exprt::build_identifier
70
75
71
76
Inputs:
72
77
@@ -76,18 +81,16 @@ Function: ssa_exprt::update_identifier
76
81
77
82
\*******************************************************************/
78
83
79
- void ssa_exprt::update_identifier ()
84
+ irep_idt ssa_exprt::build_identifier (
85
+ const exprt &expr,
86
+ const irep_idt &l0,
87
+ const irep_idt &l1,
88
+ const irep_idt &l2)
80
89
{
81
90
std::ostringstream oss;
82
91
83
- const irep_idt &l0=get_level_0 ();
84
- const irep_idt &l1=get_level_1 ();
85
- const irep_idt &l2=get_level_2 ();
92
+ build_ssa_identifier_rec (expr, l0, l1, l2, oss);
86
93
87
- build_ssa_identifier_rec (get_original_expr (), l0, l1, oss);
88
-
89
- if (!l2.empty ())
90
- oss << ' #' << l2;
91
-
92
- set_identifier (oss.str ());
94
+ return oss.str ();
93
95
}
96
+
0 commit comments