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

            Bug ID: 126091
           Summary: d: ICE in get_frame_for_symbol, at d/d-codegen.cc:2595
                    with multiple alias parameters
           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: ---

Similar to pr126089, but ICE occurs in a different location, so treating as
separate issue.

```
void ice2()
{
    int a = 10;

    auto func(alias b, alias c, alias d)()
    {
        return a + b + c + d;
    }

    auto level1()
    {
        int b = 20;

        auto level2(alias c)()
        {
            auto level3(alias d)()
            {
                return func!(b, c, d)();
            }
            int c = 30;
            return level3!d();
        }

        int d = 40;
        return level2!d();
    }

    assert(level1() == 100);
}
```

Backtrace
internal compiler error: in get_frame_for_symbol, at d/d-codegen.cc:2595
   18 |                 return func!(b, c, d)();
      |                                      ^
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
0x92f49a get_frame_for_symbol(Dsymbol*)
        ../../../gcc-16/gcc/d/d-codegen.cc:2595
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
0xeb5814 DeclVisitor::build_dsymbol(Dsymbol*)
        ../../../gcc-16/gcc/d/decl.cc:245
0xeb5814 DeclVisitor::visit(TemplateInstance*)
        ../../../gcc-16/gcc/d/decl.cc:456
0xeb5814 DeclVisitor::visit(TemplateInstance*)
        ../../../gcc-16/gcc/d/decl.cc:447
0xeafd1f DeclVisitor::build_dsymbol(Dsymbol*)
        ../../../gcc-16/gcc/d/decl.cc:245
0xeafd1f build_decl_tree(Dsymbol*)
        ../../../gcc-16/gcc/d/decl.cc:1132

Reply via email to