diff options
author | liushuyu <liushuyu011@gmail.com> | 2022-09-05 17:56:03 -0600 |
---|---|---|
committer | liushuyu <liushuyu011@gmail.com> | 2022-09-05 17:57:43 -0600 |
commit | bed01725c1c6a7a463a9b42082ef91a5406588ec (patch) | |
tree | db6b80910f02eb0469f21802ef95e98c87a4343c | |
parent | 8c6b017310ec3b4f77500d5fa8311e995d655c1a (diff) | |
download | gcc-bed01725c1c6a7a463a9b42082ef91a5406588ec.zip gcc-bed01725c1c6a7a463a9b42082ef91a5406588ec.tar.gz gcc-bed01725c1c6a7a463a9b42082ef91a5406588ec.tar.bz2 |
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.
-rw-r--r-- | gcc/rust/backend/rust-compile-expr.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/rust/backend/rust-compile-expr.cc b/gcc/rust/backend/rust-compile-expr.cc index e13c08c..660ad09 100644 --- a/gcc/rust/backend/rust-compile-expr.cc +++ b/gcc/rust/backend/rust-compile-expr.cc @@ -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 |