diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-09-08 00:08:07 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-08 00:08:07 +0000 |
commit | f03760b98ba4160f08ade309daf22fedaf1cc2dd (patch) | |
tree | 9ddcf544de1b049b32b7511d6f18c01a12ceaa8d /gcc/rust | |
parent | 8c6b017310ec3b4f77500d5fa8311e995d655c1a (diff) | |
parent | 6839ad40eebf982f149452cc294ab387350abcef (diff) | |
download | gcc-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.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 |