[llvm-bugs] [Bug 35781] New: ICE when naming conversion function of generic lambda

via llvm-bugs llvm-bugs at lists.llvm.org
Sat Dec 30 14:17:21 PST 2017


https://bugs.llvm.org/show_bug.cgi?id=35781

            Bug ID: 35781
           Summary: ICE when naming conversion function of generic lambda
           Product: clang
           Version: trunk
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: C++
          Assignee: unassignedclangbugs at nondot.org
          Reporter: hstong at ca.ibm.com
                CC: dgregor at apple.com, llvm-bugs at lists.llvm.org

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 (https://github.com/llvm-mirror/clang.git
ca674819d0450d7eb350c2205393a69dc206f3a9)
(https://github.com/llvm-mirror/llvm.git
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

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20171230/78485f33/attachment.html>


More information about the llvm-bugs mailing list