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

            Bug ID: 126089
           Summary: d: ICE in get_frame_for_symbol, at d/d-codegen.cc:2563
           Product: gcc
           Version: 12.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: d
          Assignee: ibuclaw at gdcproject dot org
          Reporter: ibuclaw at gcc dot gnu.org
  Target Milestone: ---

When compiling a nested function with two unrelated capture scopes (aka dual
context).

```
void ice1()
{
    int a = 10;
    auto sum(alias b)()
    {
        return a + b;
    }
    struct S
    {
        int a = 20;
        auto test()
        {
            return sum!a();
        }
    }
    assert(S().test() == 30);
}
```

Backtrace
internal compiler error: in get_frame_for_symbol, at d/d-codegen.cc:2563
   13 |             return sum!a();
      |                         ^
0x2b6d682 internal_error(char const*, ...)
        ../../../gcc-16/gcc/diagnostic-global-context.cc:787
0xbdf163 fancy_abort(char const*, int, char const*)
        ../../../gcc-16/gcc/diagnostics/context.cc:1813
0xe9da78 get_frame_for_symbol(Dsymbol*)
        ../../../gcc-16/gcc/d/d-codegen.cc:2563
0xec0ac4 ExprVisitor::visit(CallExp*)
        ../../../gcc-16/gcc/d/expr.cc:1563
0xeba146 build_expr(Expression*, bool, bool)
        ../../../gcc-16/gcc/d/expr.cc:2865
0xebf37e ExprVisitor::visit(CommaExp*)
        ../../../gcc-16/gcc/d/expr.cc:1107
0xeba146 build_expr(Expression*, bool, bool)
        ../../../gcc-16/gcc/d/expr.cc:2865
0xeba2d9 build_return_dtor(Expression*, Type*, TypeFunction*)
        ../../../gcc-16/gcc/d/expr.cc:2905
0xecbec8 IRVisitor::visit(ReturnStatement*)
        ../../../gcc-16/gcc/d/toir.cc:1115
0xecbac0 IRVisitor::build_stmt(Statement*)
        ../../../gcc-16/gcc/d/toir.cc:306
0xecbac0 IRVisitor::visit(CompoundStatement*)
        ../../../gcc-16/gcc/d/toir.cc:1143
0xecbac0 IRVisitor::visit(CompoundStatement*)
        ../../../gcc-16/gcc/d/toir.cc:1133
0xeca895 IRVisitor::build_stmt(Statement*)
        ../../../gcc-16/gcc/d/toir.cc:306
0xeca895 build_function_body(FuncDeclaration*)
        ../../../gcc-16/gcc/d/toir.cc:1555
0xeb8f6f DeclVisitor::visit(FuncDeclaration*)
        ../../../gcc-16/gcc/d/decl.cc:1091
0xeb7ea5 DeclVisitor::build_dsymbol(Dsymbol*)
        ../../../gcc-16/gcc/d/decl.cc:245
0xeb7ea5 DeclVisitor::visit(StructDeclaration*)
        ../../../gcc-16/gcc/d/decl.cc:511
0xeafd1f DeclVisitor::build_dsymbol(Dsymbol*)
        ../../../gcc-16/gcc/d/decl.cc:245
0xeafd1f build_decl_tree(Dsymbol*)
        ../../../gcc-16/gcc/d/decl.cc:1132
0xeba44d ExprVisitor::visit(DeclarationExp*)
        ../../../gcc-16/gcc/d/expr.cc:1818

Reply via email to