Skip to content

Commit 53819e5

Browse files
authored
Merge pull request #3937 from tautschnig/deprecation-while
Construct code_(do)whilet bottom-up [blocks: #3800]
2 parents 7f2ff2c + 52d379f commit 53819e5

File tree

2 files changed

+6
-18
lines changed

2 files changed

+6
-18
lines changed

src/goto-instrument/goto_program2code.cpp

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -518,10 +518,8 @@ goto_programt::const_targett goto_program2codet::convert_do_while(
518518
{
519519
assert(loop_end->is_goto() && loop_end->is_backwards_goto());
520520

521-
code_dowhilet d;
522-
d.cond()=loop_end->guard;
521+
code_dowhilet d(loop_end->guard, code_blockt());
523522
simplify(d.cond(), ns);
524-
d.body()=code_blockt();
525523

526524
copy_source_location(loop_end->targets.front(), d);
527525

@@ -571,8 +569,7 @@ goto_programt::const_targett goto_program2codet::convert_goto_while(
571569
if(target==loop_end) // 1: GOTO 1
572570
return convert_goto_goto(target, dest);
573571

574-
code_whilet w;
575-
w.body()=code_blockt();
572+
code_whilet w(true_exprt{}, code_blockt{});
576573
goto_programt::const_targett after_loop=loop_end;
577574
++after_loop;
578575
assert(after_loop!=goto_program.instructions.end());
@@ -586,12 +583,10 @@ goto_programt::const_targett goto_program2codet::convert_goto_while(
586583
}
587584
else if(target->guard.is_true())
588585
{
589-
w.cond()=true_exprt();
590586
target=convert_goto_goto(target, w.body());
591587
}
592588
else
593589
{
594-
w.cond()=true_exprt();
595590
target=convert_goto_switch(target, loop_end, w.body());
596591
}
597592

@@ -641,12 +636,8 @@ goto_programt::const_targett goto_program2codet::convert_goto_while(
641636
to_code_ifthenelse(back).cond().is_true() &&
642637
to_code_ifthenelse(back).then_case().get_statement()==ID_break))
643638
{
644-
code_dowhilet d;
645-
646-
d.cond()=false_exprt();
647-
648639
w.body().operands().pop_back();
649-
d.body().swap(w.body());
640+
code_dowhilet d(false_exprt(), w.body());
650641

651642
copy_source_location(target, d);
652643

unit/analyses/ai/ai.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -206,11 +206,6 @@ SCENARIO(
206206

207207
f_body.copy_to_operands(make_void_call(h.symbol_expr()));
208208

209-
code_whilet loop;
210-
211-
loop.cond() =
212-
notequal_exprt(x.symbol_expr(), from_integer(0, signed_int_type()));
213-
214209
code_blockt loop_body;
215210
loop_body.copy_to_operands(
216211
code_assignt(
@@ -222,7 +217,9 @@ SCENARIO(
222217
minus_exprt(y.symbol_expr(), from_integer(1, signed_int_type()))));
223218
loop_body.copy_to_operands(make_void_call(g.symbol_expr()));
224219

225-
loop.body() = loop_body;
220+
code_whilet loop(
221+
notequal_exprt(x.symbol_expr(), from_integer(0, signed_int_type())),
222+
loop_body);
226223

227224
f_body.add_to_operands(std::move(loop));
228225

0 commit comments

Comments
 (0)