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

            Bug ID: 92331
           Summary: ICE on incorrect code with VLA
           Product: gcc
           Version: 9.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: coillol at yandex dot ru
  Target Milestone: ---

The following text triggers ICE in gcc (at least on 9.2.0 and trunk --
https://godbolt.org/z/WHnZCJ):

int foo();

int main() {
  using X = int[foo()];
  struct S { S() { X x; } } s;
}

Compiling it using gcc-9.2.0 with no additional options gives this stacktrace:

during RTL pass: expand
doublekill.cpp: In constructor ‘main()::S::S()’:
doublekill.cpp:4:22: internal compiler error: in expand_expr_real_1, at
expr.c:10012
    4 |   using X = int[foo()];
      |                      ^
0x5c5d88 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ../.././gcc/expr.c:10012
0x8eb0ab store_expr(tree_node*, rtx_def*, int, bool, bool)
        ../.././gcc/expr.c:5674
0x8ec2b0 expand_assignment(tree_node*, tree_node*, bool)
        ../.././gcc/expr.c:5436
0x7ee5a8 expand_gimple_stmt_1
        ../.././gcc/cfgexpand.c:3752
0x7ee5a8 expand_gimple_stmt
        ../.././gcc/cfgexpand.c:3850
0x7f34bf expand_gimple_basic_block
        ../.././gcc/cfgexpand.c:5890
0x7f583e execute
        ../.././gcc/cfgexpand.c:6513

Reply via email to