From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1643) id CBC863850235; Mon, 12 Sep 2022 07:20:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CBC863850235 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1662967248; bh=xQ2jB2sKiLUuNTVZZspQIc3z8ZgE04CjgapwXhT6kQg=; h=From:To:Subject:Date:From; b=iH+n4CgxW+4g22Mj3GEwH0avJ45si3safDGlxVB+XSpTfBgHqlVY+j0yMW6eVCviH F3JadsJ/SwNHUWY85w7InLPTL1DsA28r6pHgg4euKT1WWT8XchS7WOXCyej62qw8U9 lpjWXzUv/o7OimNqT1e8nOdxCeRMLuwJw/NaWDcU= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Thomas Schwinge To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/rust/master] backend: correctly formulate the exit condition ... X-Act-Checkin: gcc X-Git-Author: liushuyu X-Git-Refname: refs/heads/devel/rust/master X-Git-Oldrev: 8c6b017310ec3b4f77500d5fa8311e995d655c1a X-Git-Newrev: bed01725c1c6a7a463a9b42082ef91a5406588ec Message-Id: <20220912072048.CBC863850235@sourceware.org> Date: Mon, 12 Sep 2022 07:20:48 +0000 (GMT) List-Id: https://gcc.gnu.org/g:bed01725c1c6a7a463a9b42082ef91a5406588ec commit bed01725c1c6a7a463a9b42082ef91a5406588ec Author: liushuyu Date: Mon Sep 5 17:56:03 2022 -0600 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. 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 e13c08caae4..660ad092b77 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