diff options
author | Philip Herron <herron.philip@googlemail.com> | 2023-03-29 16:14:04 +0100 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-01-16 18:28:39 +0100 |
commit | fc2ba3b929aa6457a37604567c01bd97b92ecab1 (patch) | |
tree | 5325f499bb52f315b93ca8e1d35e7e57eb0eeee9 /gcc/testsuite/rust/execute | |
parent | 7b2d86cad18998e6e14b6fa74d4a984438ab4b72 (diff) | |
download | gcc-fc2ba3b929aa6457a37604567c01bd97b92ecab1.zip gcc-fc2ba3b929aa6457a37604567c01bd97b92ecab1.tar.gz gcc-fc2ba3b929aa6457a37604567c01bd97b92ecab1.tar.bz2 |
gccrs: fix ICE when closure body is not a block
Fixes: #2052
gcc/rust/ChangeLog:
* backend/rust-compile-expr.cc (CompileExpr::generate_closure_function):
when its not a block we dont have any ribs to generate locals from
gcc/testsuite/ChangeLog:
* rust/execute/torture/issue-2052.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
Diffstat (limited to 'gcc/testsuite/rust/execute')
-rw-r--r-- | gcc/testsuite/rust/execute/torture/issue-2052.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/testsuite/rust/execute/torture/issue-2052.rs b/gcc/testsuite/rust/execute/torture/issue-2052.rs new file mode 100644 index 0000000..6c15eb3 --- /dev/null +++ b/gcc/testsuite/rust/execute/torture/issue-2052.rs @@ -0,0 +1,15 @@ +#[lang = "fn_once"] +pub trait FnOnce<Args> { + #[lang = "fn_once_output"] + type Output; + + extern "rust-call" fn call_once(self, args: Args) -> Self::Output; +} + +pub fn f() -> i32 { + (|| 42)() +} + +pub fn main() -> i32 { + f() - 42 +} |