Skip to content

Commit bbbe601

Browse files
committed
Remove ID_reference as front-ends use ID_pointer+ID_C_reference
1 parent d83648d commit bbbe601

File tree

11 files changed

+31
-35
lines changed

11 files changed

+31
-35
lines changed

src/ansi-c/type2name.cpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,12 @@ static std::string type2name(
134134
else if(type.id()==ID_natural)
135135
result+='N';
136136
else if(type.id()==ID_pointer)
137-
result+='*';
138-
else if(type.id()==ID_reference)
139-
result+='&';
137+
{
138+
if(type.get_bool(ID_C_reference))
139+
result+='&';
140+
else
141+
result+='*';
142+
}
140143
else if(type.id()==ID_code)
141144
{
142145
const code_typet &t=to_code_type(type);

src/jsil/jsil_typecheck.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ void jsil_typecheckt::typecheck_expr_main(exprt &expr)
178178
expr.id()=="builtin_object" ||
179179
expr.id()=="user_object" ||
180180
expr.id()=="object" ||
181-
expr.id()==ID_reference ||
181+
expr.id()==ID_pointer ||
182182
expr.id()==ID_member ||
183183
expr.id()=="variable")
184184
expr.type()=jsil_kind();

src/jsil/parser.y

+2-1
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,8 @@ jsil_type: TOK_T_NULL
614614
| ref_type
615615
| TOK_T_REFERENCE
616616
{
617-
newstack($$).id(ID_reference);
617+
newstack($$).id(ID_pointer);
618+
newstack($$).set(ID_C_reference, true);
618619
}
619620
;
620621

src/solvers/cvc/cvc_conv.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -1308,8 +1308,7 @@ void cvc_convt::convert_type(const typet &type)
13081308

13091309
out << " #]";
13101310
}
1311-
else if(type.id()==ID_pointer ||
1312-
type.id()==ID_reference)
1311+
else if(type.id()==ID_pointer)
13131312
{
13141313
out << cvc_pointer_type();
13151314
}

src/solvers/dplib/dplib_conv.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -1116,8 +1116,7 @@ void dplib_convt::convert_dplib_type(const typet &type)
11161116

11171117
dplib_prop.out << " #]";
11181118
}
1119-
else if(type.id()==ID_pointer ||
1120-
type.id()==ID_reference)
1119+
else if(type.id()==ID_pointer)
11211120
{
11221121
dplib_prop.out << dplib_pointer_type();
11231122
}

src/solvers/flattening/bv_pointers.cpp

+10-10
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ literalt bv_pointerst::convert_rest(const exprt &expr)
2626
if(expr.id()==ID_invalid_pointer)
2727
{
2828
if(operands.size()==1 &&
29-
is_ptr(operands[0].type()))
29+
operands[0].type().id()==ID_pointer)
3030
{
3131
const bvt &bv=convert_bv(operands[0]);
3232

@@ -58,7 +58,7 @@ literalt bv_pointerst::convert_rest(const exprt &expr)
5858
else if(expr.id()==ID_dynamic_object)
5959
{
6060
if(operands.size()==1 &&
61-
is_ptr(operands[0].type()))
61+
operands[0].type().id()==ID_pointer)
6262
{
6363
// we postpone
6464
literalt l=prop.new_variable();
@@ -75,8 +75,8 @@ literalt bv_pointerst::convert_rest(const exprt &expr)
7575
expr.id()==ID_gt || expr.id()==ID_ge)
7676
{
7777
if(operands.size()==2 &&
78-
is_ptr(operands[0].type()) &&
79-
is_ptr(operands[1].type()))
78+
operands[0].type().id()==ID_pointer &&
79+
operands[1].type().id()==ID_pointer)
8080
{
8181
const bvt &bv0=convert_bv(operands[0]);
8282
const bvt &bv1=convert_bv(operands[1]);
@@ -217,7 +217,7 @@ bool bv_pointerst::convert_address_of_rec(
217217

218218
bvt bv_pointerst::convert_pointer_type(const exprt &expr)
219219
{
220-
if(!is_ptr(expr.type()))
220+
if(expr.type().id()!=ID_pointer)
221221
throw "convert_pointer_type got non-pointer type";
222222

223223
// make sure the config hasn't been changed
@@ -445,7 +445,7 @@ bvt bv_pointerst::convert_pointer_type(const exprt &expr)
445445

446446
bvt bv_pointerst::convert_bitvector(const exprt &expr)
447447
{
448-
if(is_ptr(expr.type()))
448+
if(expr.type().id()==ID_pointer)
449449
return convert_pointer_type(expr);
450450

451451
if(expr.id()==ID_minus &&
@@ -484,7 +484,7 @@ bvt bv_pointerst::convert_bitvector(const exprt &expr)
484484
}
485485
else if(expr.id()==ID_pointer_offset &&
486486
expr.operands().size()==1 &&
487-
is_ptr(expr.op0().type()))
487+
expr.op0().type().id()==ID_pointer)
488488
{
489489
bvt op0=convert_bv(expr.op0());
490490

@@ -501,7 +501,7 @@ bvt bv_pointerst::convert_bitvector(const exprt &expr)
501501
}
502502
else if(expr.id()==ID_object_size &&
503503
expr.operands().size()==1 &&
504-
is_ptr(expr.op0().type()))
504+
expr.op0().type().id()==ID_pointer)
505505
{
506506
// we postpone until we know the objects
507507
std::size_t width=boolbv_width(expr.type());
@@ -522,7 +522,7 @@ bvt bv_pointerst::convert_bitvector(const exprt &expr)
522522
}
523523
else if(expr.id()==ID_pointer_object &&
524524
expr.operands().size()==1 &&
525-
is_ptr(expr.op0().type()))
525+
expr.op0().type().id()==ID_pointer)
526526
{
527527
bvt op0=convert_bv(expr.op0());
528528

@@ -563,7 +563,7 @@ exprt bv_pointerst::bv_get_rec(
563563
std::size_t offset,
564564
const typet &type) const
565565
{
566-
if(!is_ptr(type))
566+
if(type.id()!=ID_pointer)
567567
return SUB::bv_get_rec(bv, unknown, offset, type);
568568

569569
std::string value_addr, value_offset, value;

src/solvers/flattening/bv_pointers.h

-5
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,6 @@ class bv_pointerst:public boolbvt
6464
postponed_listt postponed_list;
6565

6666
void do_postponed(const postponedt &postponed);
67-
68-
static bool is_ptr(const typet &type)
69-
{
70-
return type.id()==ID_pointer || type.id()==ID_reference;
71-
}
7267
};
7368

7469
#endif // CPROVER_SOLVERS_FLATTENING_BV_POINTERS_H

src/solvers/flattening/pointer_logic.cpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,12 @@ exprt pointer_logict::pointer_expr(
112112
exprt result;
113113

114114
if(type.id()==ID_pointer)
115-
result=exprt(ID_address_of, type);
116-
else if(type.id()==ID_reference)
117-
result=exprt("reference_to", type);
115+
{
116+
if(type.get_bool(ID_C_reference))
117+
result=exprt("reference_to", type);
118+
else
119+
result=exprt(ID_address_of, type);
120+
}
118121
else
119122
assert(0);
120123

src/solvers/smt1/smt1_conv.cpp

+2-3
Original file line numberDiff line numberDiff line change
@@ -2946,13 +2946,12 @@ void smt1_convt::convert_type(const typet &type)
29462946

29472947
out << "BitVec[" << width << "]";
29482948
}
2949-
else if(type.id()==ID_pointer ||
2950-
type.id()==ID_reference)
2949+
else if(type.id()==ID_pointer)
29512950
{
29522951
std::size_t width=boolbv_width(type);
29532952

29542953
if(width==0)
2955-
throw "failed to get width of pointer/reference";
2954+
throw "failed to get width of pointer";
29562955

29572956
out << "BitVec[" << width << "]";
29582957
}

src/solvers/smt2/smt2_conv.cpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -4167,8 +4167,7 @@ void smt2_convt::find_symbols(const exprt &expr)
41674167
{
41684168
const exprt &op = expr.op0();
41694169

4170-
if(op.type().id()==ID_pointer ||
4171-
op.type().id()==ID_reference)
4170+
if(op.type().id()==ID_pointer)
41724171
{
41734172
if(object_sizes.find(expr)==object_sizes.end())
41744173
{
@@ -4344,8 +4343,7 @@ void smt2_convt::convert_type(const typet &type)
43444343

43454344
out << "(_ BitVec " << width << ")";
43464345
}
4347-
else if(type.id()==ID_pointer ||
4348-
type.id()==ID_reference)
4346+
else if(type.id()==ID_pointer)
43494347
{
43504348
out << "(_ BitVec "
43514349
<< boolbv_width(type) << ")";

src/util/irep_ids.def

-1
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,6 @@ IREP_ID_ONE(forever)
194194
IREP_ID_ONE(repeat)
195195
IREP_ID_ONE(extractbit)
196196
IREP_ID_ONE(extractbits)
197-
IREP_ID_ONE(reference)
198197
IREP_ID_TWO(C_reference, #reference)
199198
IREP_ID_TWO(C_rvalue_reference, #rvalue_reference)
200199
IREP_ID_ONE(true)

0 commit comments

Comments
 (0)