Skip to content

Commit bb6ad6d

Browse files
committed
Use complex_real_exprt and complex_imag_exprt in goto_rw
1 parent f0fbf4b commit bb6ad6d

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

src/analyses/goto_rw.cpp

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,22 +82,29 @@ void rw_range_sett::output(std::ostream &out) const
8282
}
8383
}
8484

85-
void rw_range_sett::get_objects_complex(
85+
void rw_range_sett::get_objects_complex_real(
8686
get_modet mode,
87-
const exprt &expr,
87+
const complex_real_exprt &expr,
8888
const range_spect &range_start,
8989
const range_spect &size)
9090
{
91-
const exprt &op=expr.op0();
92-
assert(op.type().id()==ID_complex);
91+
get_objects_rec(mode, expr.op(), range_start, size);
92+
}
9393

94-
range_spect sub_size=
94+
void rw_range_sett::get_objects_complex_imag(
95+
get_modet mode,
96+
const complex_imag_exprt &expr,
97+
const range_spect &range_start,
98+
const range_spect &size)
99+
{
100+
const exprt &op = expr.op();
101+
102+
range_spect sub_size =
95103
to_range_spect(pointer_offset_bits(op.type().subtype(), ns));
96104
assert(sub_size>0);
97-
range_spect offset=
98-
(range_start==-1 || expr.id()==ID_complex_real) ? 0 : sub_size;
105+
range_spect offset = range_start == -1 ? 0 : sub_size;
99106

100-
get_objects_rec(mode, op, range_start+offset, size);
107+
get_objects_rec(mode, op, range_start + offset, size);
101108
}
102109

103110
void rw_range_sett::get_objects_if(
@@ -487,9 +494,10 @@ void rw_range_sett::get_objects_rec(
487494
const range_spect &range_start,
488495
const range_spect &size)
489496
{
490-
if(expr.id()==ID_complex_real ||
491-
expr.id()==ID_complex_imag)
492-
get_objects_complex(mode, expr, range_start, size);
497+
if(expr.id() == ID_complex_real)
498+
get_objects_complex_real(mode, to_complex_real_expr(expr), range_start, size);
499+
else if(expr.id() == ID_complex_imag)
500+
get_objects_complex_imag(mode, to_complex_imag_expr(expr), range_start, size);
493501
else if(expr.id()==ID_typecast)
494502
get_objects_typecast(
495503
mode,

src/analyses/goto_rw.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,15 @@ class rw_range_sett
161161
get_modet mode,
162162
const exprt &expr);
163163

164-
virtual void get_objects_complex(
164+
virtual void get_objects_complex_real(
165165
get_modet mode,
166-
const exprt &expr,
166+
const complex_real_exprt &expr,
167+
const range_spect &range_start,
168+
const range_spect &size);
169+
170+
virtual void get_objects_complex_imag(
171+
get_modet mode,
172+
const complex_imag_exprt &expr,
167173
const range_spect &range_start,
168174
const range_spect &size);
169175

0 commit comments

Comments
 (0)