Skip to content

Commit de668e6

Browse files
author
Daniel Kroening
committed
upgrade uses of deprecated member_exprt constructor
1 parent 9da3f4f commit de668e6

File tree

7 files changed

+43
-38
lines changed

7 files changed

+43
-38
lines changed

src/cpp/cpp_typecheck_resolve.cpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -2127,9 +2127,11 @@ void cpp_typecheck_resolvet::apply_template_args(
21272127

21282128
DATA_INVARIANT(struct_type.has_component(new_symbol.name),
21292129
"method should exist in struct");
2130-
member_exprt member(code_type);
2131-
member.set_component_name(new_symbol.name);
2132-
member.struct_op()=*fargs.operands.begin();
2130+
2131+
member_exprt member(
2132+
*fargs.operands.begin(),
2133+
new_symbol.name,
2134+
code_type);
21332135
member.add_source_location()=source_location;
21342136
expr.swap(member);
21352137
return;

src/goto-programs/interpreter.cpp

+14-9
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ void interpretert::execute_decl()
417417

418418
/// retrieves the member at offset
419419
/// \par parameters: an object and a memory offset
420-
irep_idt interpretert::get_component_id(
420+
struct_typet::componentt interpretert::get_component(
421421
const irep_idt &object,
422422
unsigned offset)
423423
{
@@ -428,15 +428,16 @@ irep_idt interpretert::get_component_id(
428428

429429
const struct_typet &struct_type=to_struct_type(real_type);
430430
const struct_typet::componentst &components=struct_type.components();
431-
for(struct_typet::componentst::const_iterator it=components.begin();
432-
it!=components.end(); it++)
431+
432+
for(const auto &c : components)
433433
{
434434
if(offset<=0)
435-
return it->id();
436-
size_t size=get_size(it->type());
437-
offset-=size;
435+
return c;
436+
437+
offset-=get_size(c.type());
438438
}
439-
return object;
439+
440+
throw "access out of struct bounds";
440441
}
441442

442443
/// returns the type object corresponding to id
@@ -600,6 +601,7 @@ exprt interpretert::get_value(
600601
result.set_value(ID_NULL);
601602
return result;
602603
}
604+
603605
if(rhs[offset]<memory.size())
604606
{
605607
// We want the symbol pointed to
@@ -612,15 +614,18 @@ exprt interpretert::get_value(
612614

613615
if(offset==0)
614616
return address_of_exprt(symbol_expr);
617+
615618
if(ns.follow(type).id()==ID_struct)
616619
{
617-
irep_idt member_id=get_component_id(identifier, offset);
618-
member_exprt member_expr(symbol_expr, member_id);
620+
const auto c=get_component(identifier, offset);
621+
member_exprt member_expr(symbol_expr, c);
619622
return address_of_exprt(member_expr);
620623
}
624+
621625
index_exprt index_expr(
622626
symbol_expr,
623627
from_integer(offset, integer_typet()));
628+
624629
return index_expr;
625630
}
626631

src/goto-programs/interpreter_class.h

+6-2
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@ Author: Daniel Kroening, [email protected]
1616

1717
#include <util/arith_tools.h>
1818
#include <util/invariant.h>
19+
#include <util/std_types.h>
1920
#include <util/sparse_vector.h>
21+
#include <util/message.h>
2022

2123
#include "goto_functions.h"
2224
#include "goto_trace.h"
2325
#include "json_goto_trace.h"
24-
#include "util/message.h"
2526

2627
class interpretert:public messaget
2728
{
@@ -195,7 +196,10 @@ class interpretert:public messaget
195196
bool unbounded_size(const typet &);
196197
size_t get_size(const typet &type);
197198

198-
irep_idt get_component_id(const irep_idt &object, unsigned offset);
199+
struct_typet::componentt get_component(
200+
const irep_idt &object,
201+
unsigned offset);
202+
199203
typet get_type(const irep_idt &id) const;
200204
exprt get_value(
201205
const typet &type,

src/goto-programs/string_abstraction.cpp

+10-5
Original file line numberDiff line numberDiff line change
@@ -1333,19 +1333,24 @@ exprt string_abstractiont::member(const exprt &a, whatt what)
13331333
{
13341334
if(a.is_nil())
13351335
return a;
1336+
13361337
assert(type_eq(a.type(), string_struct, ns) ||
13371338
is_ptr_string_struct(a.type()));
13381339

1339-
member_exprt result(build_type(what));
1340-
result.struct_op()=a.type().id()==ID_pointer?
1340+
exprt struct_op=
1341+
a.type().id()==ID_pointer?
13411342
dereference_exprt(a, string_struct):a;
13421343

1344+
irep_idt component_name;
1345+
13431346
switch(what)
13441347
{
1345-
case whatt::IS_ZERO: result.set_component_name("is_zero"); break;
1346-
case whatt::SIZE: result.set_component_name("size"); break;
1347-
case whatt::LENGTH: result.set_component_name("length"); break;
1348+
case whatt::IS_ZERO: component_name="is_zero"; break;
1349+
case whatt::SIZE: component_name="size"; break;
1350+
case whatt::LENGTH: component_name="length"; break;
13481351
}
13491352

1353+
member_exprt result(struct_op, component_name, build_type(what));
1354+
13501355
return result;
13511356
}

src/linking/linking.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ void linkingt::detailed_conflict_report_rec(
200200
conflict_path=conflict_path_before;
201201
conflict_path.type()=t1;
202202
conflict_path=
203-
member_exprt(conflict_path, components1[i].get_name());
203+
member_exprt(conflict_path, components1[i]);
204204

205205
if(depth>0 &&
206206
parent_types.find(t1)==parent_types.end())

src/pointer-analysis/value_set.cpp

+4-10
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,7 @@ void value_sett::get_value_set_rec(
833833

834834
found=true;
835835

836-
member_exprt member(expr.op0(), name, c_it->type());
836+
member_exprt member(expr.op0(), *c_it);
837837
get_value_set_rec(member, dest, suffix, original_type, ns);
838838
}
839839
}
@@ -1050,9 +1050,7 @@ void value_sett::get_reference_set_rec(
10501050
{
10511051
objectt o=it->second;
10521052

1053-
member_exprt member_expr(expr.type());
1054-
member_expr.op0()=object;
1055-
member_expr.set_component_name(component_name);
1053+
member_exprt member_expr(object, component_name, expr.type());
10561054

10571055
// We cannot introduce a cast from scalar to non-scalar,
10581056
// thus, we can only adjust the types of structs and unions.
@@ -1121,9 +1119,7 @@ void value_sett::assign(
11211119
if(subtype.id()==ID_code ||
11221120
c_it->get_is_padding()) continue;
11231121

1124-
member_exprt lhs_member(subtype);
1125-
lhs_member.set_component_name(name);
1126-
lhs_member.op0()=lhs;
1122+
member_exprt lhs_member(lhs, name, subtype);
11271123

11281124
exprt rhs_member;
11291125

@@ -1698,9 +1694,7 @@ exprt value_sett::make_member(
16981694

16991695
// give up
17001696
typet subtype=struct_union_type.component_type(component_name);
1701-
member_exprt member_expr(subtype);
1702-
member_expr.op0()=src;
1703-
member_expr.set_component_name(component_name);
1697+
member_exprt member_expr(src, component_name, subtype);
17041698

17051699
return member_expr;
17061700
}

src/solvers/flattening/pointer_logic.cpp

+3-8
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,11 @@ exprt pointer_logict::object_rec(
146146

147147
mp_integer current_offset=0;
148148

149-
for(struct_typet::componentst::const_iterator
150-
it=components.begin();
151-
it!=components.end();
152-
it++)
149+
for(const auto &c : components)
153150
{
154151
assert(offset>=current_offset);
155152

156-
const typet &subtype=it->type();
153+
const typet &subtype=c.type();
157154

158155
mp_integer sub_size=pointer_offset_size(subtype, ns);
159156
assert(sub_size>0);
@@ -162,9 +159,7 @@ exprt pointer_logict::object_rec(
162159
if(new_offset>offset)
163160
{
164161
// found it
165-
member_exprt tmp(subtype);
166-
tmp.set_component_name(it->get_name());
167-
tmp.op0()=src;
162+
member_exprt tmp(src, c);
168163

169164
return object_rec(
170165
offset-current_offset, pointer_type, tmp);

0 commit comments

Comments
 (0)