gccrs: backend: correctly formulate the exit condition ...

... previously the exit condition was treated the same as the loop
condition (which is the inverse condition of the exit condition). Now
this is corrected.

gcc/rust/ChangeLog:

	* backend/rust-compile-expr.cc (CompileExpr::visit): Properly formulate
	exit condition when compiling while loops.

Signed-off-by: Zixing Liu <liushuyu011@gmail.com>
This commit is contained in:
liushuyu
2022-09-05 17:56:03 -06:00
committed by Arthur Cohen
parent b0ff1647cb
commit e6a3886a83

View File

@@ -727,8 +727,11 @@ CompileExpr::visit (HIR::WhileLoopExpr &expr)
tree condition
= CompileExpr::Compile (expr.get_predicate_expr ().get (), ctx);
tree exit_condition
= fold_build1_loc (expr.get_locus ().gcc_location (), TRUTH_NOT_EXPR,
boolean_type_node, condition);
tree exit_expr
= ctx->get_backend ()->exit_expression (condition, expr.get_locus ());
= ctx->get_backend ()->exit_expression (exit_condition, expr.get_locus ());
ctx->add_statement (exit_expr);
tree code_block_stmt