From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7905) id CDC593854801; Tue, 31 Jan 2023 13:16:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CDC593854801 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1675170968; bh=PNrH2raC721eE3/0vQLRzVugYTOrikk6206MRmLgUHw=; h=From:To:Subject:Date:From; b=MY9ZMpucAnj626huLWV0+sbRu3HSJSZck7DZNst5cuQCvh7IyYtFGf7uBoumsq+G1 TmyeOOI8IYYy2qIIFHRpI1GMc2V1HbWbxU3F0iXRqiiSIsO2x+FSriJbXpWy2P/A/Z q8CkOaLHmgfxWLVUuzCDORmfnBbR7i0M9JEQznIw= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Arthur Cohen To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-5556] gccrs: backend: correctly formulate the exit condition ... X-Act-Checkin: gcc X-Git-Author: liushuyu X-Git-Refname: refs/heads/master X-Git-Oldrev: b0ff1647cbe682b681ab9abaed3315b6b03c20fc X-Git-Newrev: e6a3886a833a0c499ab20a828ffae79076d47a4d Message-Id: <20230131131608.CDC593854801@sourceware.org> Date: Tue, 31 Jan 2023 13:16:08 +0000 (GMT) List-Id: https://gcc.gnu.org/g:e6a3886a833a0c499ab20a828ffae79076d47a4d commit r13-5556-ge6a3886a833a0c499ab20a828ffae79076d47a4d Author: liushuyu Date: Mon Sep 5 17:56:03 2022 -0600 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 Diff: --- gcc/rust/backend/rust-compile-expr.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc/rust/backend/rust-compile-expr.cc b/gcc/rust/backend/rust-compile-expr.cc index ea146731cbe..d58e2258947 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