diff options
author | liushuyu <liushuyu011@gmail.com> | 2022-09-05 17:56:03 -0600 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2023-01-31 14:16:51 +0100 |
commit | e6a3886a833a0c499ab20a828ffae79076d47a4d (patch) | |
tree | 71a89ed815c718b367c7488c82b346d440ca3894 /gcc/rust | |
parent | b0ff1647cbe682b681ab9abaed3315b6b03c20fc (diff) | |
download | gcc-e6a3886a833a0c499ab20a828ffae79076d47a4d.zip gcc-e6a3886a833a0c499ab20a828ffae79076d47a4d.tar.gz gcc-e6a3886a833a0c499ab20a828ffae79076d47a4d.tar.bz2 |
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 <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 ea14673..d58e225 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 |