Skip to content

Commit 7c483c1

Browse files
authored
Merge pull request #3140 from smowton/smowton/cleanup/dedup-replace-symbol
Replace symbol: factor address_of_aware variant to use the unchecked variant
2 parents 8c770ca + 3d03d32 commit 7c483c1

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

src/util/replace_symbol.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -323,17 +323,16 @@ bool address_of_aware_replace_symbolt::replace(exprt &dest) const
323323
bool address_of_aware_replace_symbolt::replace_symbol_expr(
324324
symbol_exprt &s) const
325325
{
326-
expr_mapt::const_iterator it = expr_map.find(s.get_identifier());
327-
328-
if(it == expr_map.end())
326+
symbol_exprt s_copy = s;
327+
if(unchecked_replace_symbolt::replace_symbol_expr(s_copy))
329328
return true;
330329

331-
const exprt &e = it->second;
332-
333-
if(require_lvalue && !is_lvalue(e))
330+
if(require_lvalue && !is_lvalue(s_copy))
334331
return true;
335332

336-
static_cast<exprt &>(s) = e;
333+
// Note s_copy is no longer a symbol_exprt due to the replace operation,
334+
// and after this line `s` won't be either
335+
s = s_copy;
337336

338337
return false;
339338
}

src/util/replace_symbol.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ class unchecked_replace_symbolt : public replace_symbolt
104104

105105
void insert(const symbol_exprt &old_expr, const exprt &new_expr);
106106

107-
private:
107+
protected:
108108
bool replace_symbol_expr(symbol_exprt &dest) const override;
109109
};
110110

0 commit comments

Comments
 (0)