Skip to content

Commit 899fe03

Browse files
committed
Use complex_real_exprt and complex_imag_exprt in goto_rw
1 parent 520d1de commit 899fe03

File tree

2 files changed

+29
-13
lines changed

2 files changed

+29
-13
lines changed

src/analyses/goto_rw.cpp

Lines changed: 21 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,12 @@ 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(
499+
mode, to_complex_real_expr(expr), range_start, size);
500+
else if(expr.id() == ID_complex_imag)
501+
get_objects_complex_imag(
502+
mode, to_complex_imag_expr(expr), range_start, size);
493503
else if(expr.id()==ID_typecast)
494504
get_objects_typecast(
495505
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)