<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - ICE when naming conversion function of generic lambda"
href="https://bugs.llvm.org/show_bug.cgi?id=35781">35781</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>ICE when naming conversion function of generic lambda
</td>
</tr>
<tr>
<th>Product</th>
<td>clang
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>All
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>enhancement
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>C++
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedclangbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>hstong@ca.ibm.com
</td>
</tr>
<tr>
<th>CC</th>
<td>dgregor@apple.com, llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>When naming (a specialization of) the conversion function template of a generic
lambda, Clang ICEs.
### SOURCE:
auto g = [](auto) -> int { return 0; };
using fptype = int (*)(int);
fptype fp = g.operator fptype();
### COMPILER INVOCATION:
clang -cc1 -xc++ -
### EXPECTED OUTPUT:
(Clean compile)
### ACTUAL OUTPUT:
#0 0x0000000001b57c44 PrintStackTraceSignalHandler(void*)
(/opt/wandbox/clang-head/bin/clang+0x1b57c44)
#1 0x0000000001b57f16 SignalHandler(int)
(/opt/wandbox/clang-head/bin/clang+0x1b57f16)
#2 0x00007f43c6998390 __restore_rt
(/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)
#3 0x0000000002cf2b28
clang::Sema::MarkFunctionReferenced(clang::SourceLocation,
clang::FunctionDecl*, bool) (/opt/wandbox/clang-head/bin/clang+0x2cf2b28)
#4 0x0000000002c53177
clang::Sema::DefineImplicitLambdaToFunctionPointerConversion(clang::SourceLocation,
clang::CXXConversionDecl*) (/opt/wandbox/clang-head/bin/clang+0x2c53177)
#5 0x0000000002cf2ff5
clang::Sema::MarkFunctionReferenced(clang::SourceLocation,
clang::FunctionDecl*, bool) (/opt/wandbox/clang-head/bin/clang+0x2cf2ff5)
#6 0x0000000002cf6a97 MarkExprReferenced(clang::Sema&, clang::SourceLocation,
clang::Decl*, clang::Expr*, bool) (/opt/wandbox/clang-head/bin/clang+0x2cf6a97)
#7 0x0000000002d8294d clang::Sema::BuildMemberReferenceExpr(clang::Expr*,
clang::QualType, clang::SourceLocation, bool, clang::CXXScopeSpec const&,
clang::SourceLocation, clang::NamedDecl*, clang::LookupResult&,
clang::TemplateArgumentListInfo const*, clang::Scope const*, bool,
clang::Sema::ActOnMemberAccessExtraArgs*)
(/opt/wandbox/clang-head/bin/clang+0x2d8294d)
#8 0x0000000002d7d312 clang::Sema::BuildMemberReferenceExpr(clang::Expr*,
clang::QualType, clang::SourceLocation, bool, clang::CXXScopeSpec&,
clang::SourceLocation, clang::NamedDecl*, clang::DeclarationNameInfo const&,
clang::TemplateArgumentListInfo const*, clang::Scope const*,
clang::Sema::ActOnMemberAccessExtraArgs*)
(/opt/wandbox/clang-head/bin/clang+0x2d7d312)
#9 0x0000000002d8368c clang::Sema::ActOnMemberAccessExpr(clang::Scope*,
clang::Expr*, clang::SourceLocation, clang::tok::TokenKind,
clang::CXXScopeSpec&, clang::SourceLocation, clang::UnqualifiedId&,
clang::Decl*) (/opt/wandbox/clang-head/bin/clang+0x2d8368c)
#10 0x000000000287f14b
clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*,
true>) (/opt/wandbox/clang-head/bin/clang+0x287f14b)
#11 0x00000000028848ab clang::Parser::ParseCastExpression(bool, bool, bool&,
clang::Parser::TypeCastState, bool)
(/opt/wandbox/clang-head/bin/clang+0x28848ab)
#12 0x000000000287d04f
clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState)
(/opt/wandbox/clang-head/bin/clang+0x287d04f)
#13 0x00000000028589ab
clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*)
(/opt/wandbox/clang-head/bin/clang+0x28589ab)
#14 0x0000000002856a1c clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&,
clang::DeclaratorContext, clang::SourceLocation*, clang::Parser::ForRangeInit*)
(/opt/wandbox/clang-head/bin/clang+0x2856a1c)
#15 0x000000000283edeb
clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec&, clang::AccessSpecifier)
(/opt/wandbox/clang-head/bin/clang+0x283edeb)
#16 0x000000000283e718
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier)
(/opt/wandbox/clang-head/bin/clang+0x283e718)
#17 0x000000000283dae7
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) (/opt/wandbox/clang-head/bin/clang+0x283dae7)
#18 0x000000000283c878
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&)
(/opt/wandbox/clang-head/bin/clang+0x283c878)
#19 0x0000000002838be7 clang::ParseAST(clang::Sema&, bool, bool)
(/opt/wandbox/clang-head/bin/clang+0x2838be7)
#20 0x000000000208065f clang::FrontendAction::Execute()
(/opt/wandbox/clang-head/bin/clang+0x208065f)
#21 0x000000000203f508
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
(/opt/wandbox/clang-head/bin/clang+0x203f508)
#22 0x000000000210dc9e
clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
(/opt/wandbox/clang-head/bin/clang+0x210dc9e)
#23 0x000000000088a317 cc1_main(llvm::ArrayRef<char const*>, char const*,
void*) (/opt/wandbox/clang-head/bin/clang+0x88a317)
#24 0x00000000008891b8 main (/opt/wandbox/clang-head/bin/clang+0x8891b8)
#25 0x00007f43c5707830 __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x20830)
#26 0x0000000000886189 _start (/opt/wandbox/clang-head/bin/clang+0x886189)
Stack dump:
0. Program arguments: /opt/wandbox/clang-head/bin/clang -cc1 -xc++ -
1. <stdin>:3:30: current parser token '('
### COMPILER VERSION INFO (clang -v):
clang version 6.0.0 (<a href="https://github.com/llvm-mirror/clang.git">https://github.com/llvm-mirror/clang.git</a>
ca674819d0450d7eb350c2205393a69dc206f3a9)
(<a href="https://github.com/llvm-mirror/llvm.git">https://github.com/llvm-mirror/llvm.git</a>
7a691a48b11ef2aafbc2ec2b0c75783d4b4088d6)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/wandbox/clang-head/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.0.0
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Candidate multilib: .;@m64
Selected multilib: .;@m64</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>