Skip to content

Commit 4de6fab

Browse files
Remove unused guard argument of dereference_rec
This is never actually used. This allows to remove a lot of useless operations.
1 parent fc98c49 commit 4de6fab

File tree

2 files changed

+9
-30
lines changed

2 files changed

+9
-30
lines changed

src/pointer-analysis/goto_program_dereference.cpp

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ void goto_program_dereferencet::dereference_failure(
9898
/// and use `dereference` on subexpressions of the form `*p`
9999
/// \param expr: expression in which to remove dereferences
100100
/// \param guard: boolean expression assumed to hold when dereferencing
101-
void goto_program_dereferencet::dereference_rec(exprt &expr, guardt &guard)
101+
void goto_program_dereferencet::dereference_rec(exprt &expr)
102102
{
103103
if(!has_subexpr(expr, ID_dereference))
104104
return;
@@ -109,24 +109,15 @@ void goto_program_dereferencet::dereference_rec(exprt &expr, guardt &guard)
109109
throw expr.id_string()+" must be Boolean, but got "+
110110
expr.pretty();
111111

112-
guardt old_guard=guard;
113-
114112
for(auto &op : expr.operands())
115113
{
116114
if(!op.is_boolean())
117115
throw expr.id_string()+" takes Boolean operands only, but got "+
118116
op.pretty();
119117

120118
if(has_subexpr(op, ID_dereference))
121-
dereference_rec(op, guard);
122-
123-
if(expr.id()==ID_or)
124-
guard.add(boolean_negate(op));
125-
else
126-
guard.add(op);
119+
dereference_rec(op);
127120
}
128-
129-
guard = std::move(old_guard);
130121
return;
131122
}
132123
else if(expr.id()==ID_if)
@@ -142,26 +133,16 @@ void goto_program_dereferencet::dereference_rec(exprt &expr, guardt &guard)
142133
throw msg;
143134
}
144135

145-
dereference_rec(expr.op0(), guard);
136+
dereference_rec(expr.op0());
146137

147138
bool o1 = has_subexpr(expr.op1(), ID_dereference);
148139
bool o2 = has_subexpr(expr.op2(), ID_dereference);
149140

150141
if(o1)
151-
{
152-
guardt old_guard=guard;
153-
guard.add(expr.op0());
154-
dereference_rec(expr.op1(), guard);
155-
guard = std::move(old_guard);
156-
}
142+
dereference_rec(expr.op1());
157143

158144
if(o2)
159-
{
160-
guardt old_guard=guard;
161-
guard.add(boolean_negate(expr.op0()));
162-
dereference_rec(expr.op2(), guard);
163-
guard = std::move(old_guard);
164-
}
145+
dereference_rec(expr.op2());
165146

166147
return;
167148
}
@@ -179,7 +160,7 @@ void goto_program_dereferencet::dereference_rec(exprt &expr, guardt &guard)
179160
}
180161

181162
Forall_operands(it, expr)
182-
dereference_rec(*it, guard);
163+
dereference_rec(*it);
183164

184165
if(expr.id()==ID_dereference)
185166
{
@@ -232,15 +213,13 @@ void goto_program_dereferencet::dereference_expr(
232213
exprt &expr,
233214
const bool checks_only)
234215
{
235-
guardt guard{true_exprt{}};
236-
237216
if(checks_only)
238217
{
239218
exprt tmp(expr);
240-
dereference_rec(tmp, guard);
219+
dereference_rec(tmp);
241220
}
242221
else
243-
dereference_rec(expr, guard);
222+
dereference_rec(expr);
244223
}
245224

246225
void goto_program_dereferencet::dereference_program(

src/pointer-analysis/goto_program_dereference.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class goto_program_dereferencet:protected dereference_callbackt
8787
bool checks_only=false);
8888

8989
protected:
90-
void dereference_rec(exprt &expr, guardt &guard);
90+
void dereference_rec(exprt &expr);
9191
void dereference_expr(exprt &expr, const bool checks_only);
9292

9393
#if 0

0 commit comments

Comments
 (0)