gccrs: Closure support at CallExpr
authorPhilip Herron <philip.herron@embecosm.com>
Wed, 19 Oct 2022 17:02:36 +0000 (18:02 +0100)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 21 Feb 2023 11:36:40 +0000 (12:36 +0100)
commit699e7e862763199a0360c47f6d5ddd26a21517ce
tree8b45e8570e7f90bfa7d99a398ed04fdf34513ab6
parent740a1997228d0b568afa11b1afe89128d9afff37
gccrs: Closure support at CallExpr

gcc/rust/ChangeLog:

* backend/rust-compile-context.h: Add new functions: `insert_closure_decl` and
`lookup_closure_decl`.
* backend/rust-compile-expr.cc (CompileExpr::visit): Start compiling Closures properly.
(CompileExpr::generate_closure_function): New function.
(CompileExpr::generate_closure_fntype): Likewise.
* backend/rust-compile-expr.h: Declare `generate_closure_function` and
`generate_closure_fntype`.
* backend/rust-compile-type.cc (TyTyResolveCompile::visit): Visit closure types properly.
* backend/rust-mangle.cc (legacy_mangle_name): Add support for closures.
* backend/rust-tree.h (RS_CLOSURE_FLAG): Add new tree macro.
(RS_CLOSURE_TYPE_P): And checking for it on tree nodes.
* typecheck/rust-tyty.cc (ClosureType::is_equal): Add implementation.

gcc/testsuite/ChangeLog:

* rust/execute/torture/closure1.rs: New test.
gcc/rust/backend/rust-compile-context.h
gcc/rust/backend/rust-compile-expr.cc
gcc/rust/backend/rust-compile-expr.h
gcc/rust/backend/rust-compile-type.cc
gcc/rust/backend/rust-mangle.cc
gcc/rust/backend/rust-tree.h
gcc/rust/typecheck/rust-tyty.cc
gcc/testsuite/rust/execute/torture/closure1.rs [new file with mode: 0644]