Skip to content

Commit 2c74ebe

Browse files
Make get_failed_symbol return optional symbol_exprt
This is more precise on the type of object returned.
1 parent 9945782 commit 2c74ebe

File tree

5 files changed

+14
-25
lines changed

5 files changed

+14
-25
lines changed

src/goto-symex/symex_dead.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,9 @@ void goto_symext::symex_dead(statet &state)
3232
// in case of pointers, put something into the value set
3333
if(code.symbol().type().id() == ID_pointer)
3434
{
35-
exprt failed = get_failed_symbol(to_symbol_expr(code.symbol()), ns);
36-
3735
exprt rhs;
38-
39-
if(failed.is_not_nil())
40-
rhs = address_of_exprt(failed, to_pointer_type(code.symbol().type()));
36+
if(auto failed = get_failed_symbol(to_symbol_expr(code.symbol()), ns))
37+
rhs = address_of_exprt(*failed, to_pointer_type(code.symbol().type()));
4138
else
4239
rhs=exprt(ID_invalid);
4340

src/goto-symex/symex_decl.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,9 @@ void goto_symext::symex_decl(statet &state, const symbol_exprt &expr)
4848
// in case of pointers, put something into the value set
4949
if(expr.type().id() == ID_pointer)
5050
{
51-
exprt failed=
52-
get_failed_symbol(expr, ns);
53-
5451
exprt rhs;
55-
56-
if(failed.is_not_nil())
57-
rhs=address_of_exprt(failed, to_pointer_type(expr.type()));
52+
if(auto failed = get_failed_symbol(expr, ns))
53+
rhs = address_of_exprt(*failed, to_pointer_type(expr.type()));
5854
else
5955
rhs=exprt(ID_invalid);
6056

src/pointer-analysis/add_failed_symbols.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,17 +89,16 @@ void add_failed_symbols(symbol_table_baset &symbol_table)
8989
/// Get the failed-dereference symbol for the given symbol
9090
/// \param expr: symbol expression to get a failed symbol for
9191
/// \param ns: global namespace
92-
/// \return symbol expression for the failed-dereference symbol, or nil_exprt
93-
/// if none exists.
94-
exprt get_failed_symbol(
95-
const symbol_exprt &expr,
96-
const namespacet &ns)
92+
/// \return symbol expression for the failed-dereference symbol, or an empty
93+
/// optional if none exists.
94+
optionalt<symbol_exprt>
95+
get_failed_symbol(const symbol_exprt &expr, const namespacet &ns)
9796
{
9897
const symbolt &symbol=ns.lookup(expr);
9998
irep_idt failed_symbol_id=symbol.type.get(ID_C_failed_symbol);
10099

101100
if(failed_symbol_id.empty())
102-
return nil_exprt();
101+
return {};
103102

104103
const symbolt &failed_symbol=ns.lookup(failed_symbol_id);
105104

src/pointer-analysis/add_failed_symbols.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Author: Daniel Kroening, [email protected]
1313
#define CPROVER_POINTER_ANALYSIS_ADD_FAILED_SYMBOLS_H
1414

1515
#include <util/irep.h>
16+
#include <util/optional.h>
1617

1718
class symbol_table_baset;
1819
class symbolt;
@@ -27,8 +28,7 @@ void add_failed_symbol_if_needed(
2728

2829
irep_idt failed_symbol_id(const irep_idt &identifier);
2930

30-
exprt get_failed_symbol(
31-
const symbol_exprt &expr,
32-
const namespacet &ns);
31+
optionalt<symbol_exprt>
32+
get_failed_symbol(const symbol_exprt &expr, const namespacet &ns);
3333

3434
#endif // CPROVER_POINTER_ANALYSIS_ADD_FAILED_SYMBOLS_H

src/pointer-analysis/value_set.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1471,12 +1471,9 @@ void value_sett::apply_code_rec(
14711471
(lhs_type.id() == ID_array && lhs_type.subtype().id() == ID_pointer))
14721472
{
14731473
// assign the address of the failed object
1474-
exprt failed=get_failed_symbol(to_symbol_expr(lhs), ns);
1475-
1476-
if(failed.is_not_nil())
1474+
if(auto failed = get_failed_symbol(to_symbol_expr(lhs), ns))
14771475
{
1478-
address_of_exprt address_of_expr(
1479-
failed, to_pointer_type(lhs.type()));
1476+
address_of_exprt address_of_expr(*failed, to_pointer_type(lhs.type()));
14801477
assign(lhs, address_of_expr, ns, false, false);
14811478
}
14821479
else

0 commit comments

Comments
 (0)