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