aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust
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
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')
-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