Skip to content

[CodeComplete][Concepts] Crash finding overloads of constrained auto function #44059

@sam-mccall

Description

@sam-mccall
Bugzilla Link 44714
Resolution FIXED
Resolved on Feb 12, 2020 06:46
Version trunk
OS Linux
Blocks #43900
CC @zygoloid,@saarraz
Fixed by commit(s) 5fef14d

Extended Description

min.cc:

template concept C = true;
void bar(C auto foo);
int y = bar(

clang -cc1 -std=c++2a min.cc -code-completion-at=min.cc:3:16

/usr/local/google/home/sammccall/src/llvm-mono/clang/lib/AST/ExprConstant.cpp:13755: bool clang::Expr::EvaluateAsRValue(clang::Expr::EvalResult &, const clang::ASTContext &, bool) const: Assertion `!isValueDependent() && "Expression evaluator can't be called on a dependent expression."' failed.
Stack dump:
0. Program arguments: bin/clang -cc1 -std=c++2a /usr/local/google/home/sammccall/min.cc -code-completion-at=/usr/local/google/home/sammccall/min.cc:3:16

  1. /usr/local/google/home/sammccall/min.cc:4:1: current parser token '�'
    #​0 0x0000000002558074 PrintStackTrace /usr/local/google/home/sammccall/src/llvm-mono/llvm/lib/Support/Unix/Signals.inc:564:13
    #​1 0x0000000002558074 PrintStackTraceSignalHandler(void*) /usr/local/google/home/sammccall/src/llvm-mono/llvm/lib/Support/Unix/Signals.inc:624:0
    #​2 0x0000000002555c0e llvm::sys::RunSignalHandlers() /usr/local/google/home/sammccall/src/llvm-mono/llvm/lib/Support/Signals.cpp:69:18
    #​3 0x000000000255848c SignalHandler(int) /usr/local/google/home/sammccall/src/llvm-mono/llvm/lib/Support/Unix/Signals.inc:396:3
    #​4 0x00007f537316d3a0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x123a0)
    #​5 0x00007f53724c2cfb raise /build/glibc-XAwaOT/glibc-2.28/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
    #​6 0x00007f53724ad8ad abort /build/glibc-XAwaOT/glibc-2.28/stdlib/abort.c:81:7
    #​7 0x00007f53724ad77f get_sysdep_segment_value /build/glibc-XAwaOT/glibc-2.28/intl/loadmsgcat.c:509:8
    #​8 0x00007f53724ad77f _nl_load_domain /build/glibc-XAwaOT/glibc-2.28/intl/loadmsgcat.c:970:34
    #​9 0x00007f53724bb542 (/lib/x86_64-linux-gnu/libc.so.6+0x2f542)
    #​10 0x000000000479ca39 (bin/clang+0x479ca39)
    #​11 0x0000000003df3080 bool calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRefclang::TemplateArgument, clang::SourceLocation, clang::MultiLevelTemplateArgumentList&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_5>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRefclang::TemplateArgument, clang::SourceLocation, clang::MultiLevelTemplateArgumentList&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_5&&) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Sema/SemaConcept.cpp:151:7
    #​12 0x0000000003dedf0a CheckConstraintSatisfaction /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Sema/SemaConcept.cpp:260:9
    #​13 0x0000000003dedf0a clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::ArrayRefclang::TemplateArgument, clang::SourceRange, clang::ConstraintSatisfaction&) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Sema/SemaConcept.cpp:298:0
    #​14 0x00000000043f4d1c clang::Sema::CheckInstantiatedFunctionTemplateConstraints(clang::SourceLocation, clang::FunctionDecl*, llvm::ArrayRefclang::TemplateArgument, clang::ConstraintSatisfaction&) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:4266:10
    #​15 0x0000000004343b9c clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl*, llvm::SmallVectorImplclang::DeducedTemplateArgument&, unsigned int, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImplclang::Sema::OriginalCallArg const*, bool, llvm::function_ref<bool ()>) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Sema/SemaTemplateDeduction.cpp:3459:7
    #​16 0x0000000004345679 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRefclang::Expr*, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRefclang::QualType)>) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Sema/SemaTemplateDeduction.cpp:0:10
    #​17 0x0000000004211ec6 clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRefclang::Expr*, clang::OverloadCandidateSet&, bool, bool, bool, clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Sema/SemaOverload.cpp:6980:31
    #​18 0x00000000042274df AddOverloadedCallCandidate(clang::Sema&, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRefclang::Expr*, clang::OverloadCandidateSet&, bool, bool) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Sema/SemaOverload.cpp:12342:7
    #​19 0x000000000422730e clang::Sema::AddOverloadedCallCandidates(clang::UnresolvedLookupExpr*, llvm::ArrayRefclang::Expr*, clang::OverloadCandidateSet&, bool) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Sema/SemaOverload.cpp:12398:5
    #​20 0x0000000003d9de2b clang::Sema::ProduceCallSignatureHelp(clang::Scope*, clang::Expr*, llvm::ArrayRefclang::Expr*, clang::SourceLocation) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Sema/SemaCodeComplete.cpp:5521:5
    #​21 0x0000000003c65ec8 operator() /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/ParseExpr.cpp:1900:29
    #​22 0x0000000003c65ec8 clang::QualType llvm::function_ref<clang::QualType ()>::callback_fn<clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>)::$_1>(long) /usr/local/google/home/sammccall/src/llvm-mono/llvm/include/llvm/ADT/STLExtras.h:108:0
    #​23 0x0000000003c55b10 operator() /usr/local/google/home/sammccall/src/llvm-mono/llvm/include/llvm/ADT/STLExtras.h:125:12
    #​24 0x0000000003c55b10 get /usr/local/google/home/sammccall/src/llvm-mono/clang/include/clang/Sema/Sema.h:322:0
    #​25 0x0000000003c55b10 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/ParseExpr.cpp:163:0
    #​26 0x0000000003c63bca clang::Parser::ParseExpressionList(llvm::SmallVectorImplclang::Expr*&, llvm::SmallVectorImplclang::SourceLocation&, llvm::function_ref<void ()>) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/ParseExpr.cpp:0:0
    #​27 0x0000000003c57c70 clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/ParseExpr.cpp:1905:15
    #​28 0x0000000003c5970d clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/ParseExpr.cpp:1706:9
    #​29 0x0000000003c55b59 ParseCastExpression /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/ParseExpr.cpp:663:20
    #​30 0x0000000003c55b59 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/ParseExpr.cpp:173:0
    #​31 0x0000000003c2ea81 ParseInitializer /usr/local/google/home/sammccall/src/llvm-mono/clang/include/clang/Parse/Parser.h:0:0
    #​32 0x0000000003c2ea81 clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/ParseDecl.cpp:2374:0
    #​33 0x0000000003c2ca66 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::SourceLocation*, clang::Parser::ForRangeInit*) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/ParseDecl.cpp:2128:21
    #​34 0x0000000003c104c2 clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/Parser.cpp:1109:10
    #​35 0x0000000003c0ff05 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/Parser.cpp:1125:12
    #​36 0x0000000003c0efbd clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/Parser.cpp:945:12
    #​37 0x0000000003c0cdb5 clang::Parser::ParseTopLevelDecl(clang::OpaquePtrclang::DeclGroupRef&, bool) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/Parser.cpp:696:10
    #​38 0x0000000003c080d8 clang::ParseAST(clang::Sema&, bool, bool) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Parse/ParseAST.cpp:157:5
    #​39 0x0000000002cf5770 clang::FrontendAction::Execute() /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Frontend/FrontendAction.cpp:944:10
    #​40 0x0000000002c8cd64 getPtr /usr/local/google/home/sammccall/src/llvm-mono/llvm/include/llvm/Support/Error.h:273:42
    #​41 0x0000000002c8cd64 operator bool /usr/local/google/home/sammccall/src/llvm-mono/llvm/include/llvm/Support/Error.h:236:0
    #​42 0x0000000002c8cd64 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/Frontend/CompilerInstance.cpp:965:0
    #​43 0x0000000002da5d8f clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /usr/local/google/home/sammccall/src/llvm-mono/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:292:25
    #​44 0x000000000091c6e2 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /usr/local/google/home/sammccall/src/llvm-mono/clang/tools/driver/cc1_main.cpp:239:15
    #​45 0x000000000091a67c ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) /usr/local/google/home/sammccall/src/llvm-mono/clang/tools/driver/driver.cpp:328:12
    #​46 0x000000000091a083 main /usr/local/google/home/sammccall/src/llvm-mono/clang/tools/driver/driver.cpp:402:12
    #​47 0x00007f53724af52b __libc_start_main /build/glibc-XAwaOT/glibc-2.28/csu/../csu/libc-start.c:342:3
    #​48 0x00000000009172fa _start (bin/clang+0x9172fa)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillac++20

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions