aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/backend/rust-compile-expr.cc
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-09-08 00:08:07 +0000
committerGitHub <noreply@github.com>2022-09-08 00:08:07 +0000
commitf03760b98ba4160f08ade309daf22fedaf1cc2dd (patch)
tree9ddcf544de1b049b32b7511d6f18c01a12ceaa8d /gcc/rust/backend/rust-compile-expr.cc
parent8c6b017310ec3b4f77500d5fa8311e995d655c1a (diff)
parent6839ad40eebf982f149452cc294ab387350abcef (diff)
downloadgcc-f03760b98ba4160f08ade309daf22fedaf1cc2dd.zip
gcc-f03760b98ba4160f08ade309daf22fedaf1cc2dd.tar.gz
gcc-f03760b98ba4160f08ade309daf22fedaf1cc2dd.tar.bz2
Merge #1526
1526: backend: correctly formulate the exit condition r=philberty a=liushuyu - 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. Should fix #1523 Co-authored-by: liushuyu <liushuyu011@gmail.com>
Diffstat (limited to 'gcc/rust/backend/rust-compile-expr.cc')
-rw-r--r--gcc/rust/backend/rust-compile-expr.cc5
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