https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119846

            Bug ID: 119846
           Summary: function returning vla causes ICE
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: xiaohuba2021 at 163 dot com
  Target Milestone: ---

```
auto f(int n, int m) {
    return (int(&)[n][m])m;
}
auto g(int n, int m) {
    auto b = f(n, m);
    b[1][1] = 0;
}
```

this code (invalid) causes ICE on trunk.

Compiler outputs with `-freport-bug`:

```
<source>: In function 'auto f(int, int)':
<source>:2:12: warning: address of local variable 'm' returned
[-Wreturn-local-addr]
    2 |     return (int(&)[n][m])m;
      |            ^~~~~~~~~~~~~~~
<source>:1:19: note: declared here
    1 | auto f(int n, int m) {
      |               ~~~~^
during RTL pass: expand
<source>: In function 'auto g(int, int)':
<source>:6:8: internal compiler error: in expand_expr_real_1, at expr.cc:11485
    6 |     b[1][1] = 0;
      |        ^
0x292f045 diagnostic_context::diagnostic_impl(rich_location*,
diagnostic_metadata const*, diagnostic_option_id, char const*, __va_list_tag
(*) [1], diagnostic_t)
        ???:0
0x2946016 internal_error(char const*, ...)
        ???:0
0xad0ad4 fancy_abort(char const*, int, char const*)
        ???:0
0x101659a expand_expr_real_2(separate_ops const*, rtx_def*, machine_mode,
expand_modifier)
        ???:0
0x1020cd3 expand_expr_real_gassign(gassign*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ???:0
Please submit a full bug report, with preprocessed source.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Preprocessed source stored into /tmp/cctVglkh.out file, please attach this to
your bugreport.
Compiler returned: 1
```

Reply via email to