<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>