[llvm-bugs] [Bug 44714] New: [CodeComplete][Concepts] Crash finding overloads of constrained auto function

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Jan 30 02:40:43 PST 2020


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

            Bug ID: 44714
           Summary: [CodeComplete][Concepts] Crash finding overloads of
                    constrained auto function
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: C++2a
          Assignee: unassignedclangbugs at nondot.org
          Reporter: sammccall at google.com
                CC: blitzrakete at gmail.com, erik.pilkington at gmail.com,
                    llvm-bugs at lists.llvm.org, richard-llvm at metafoo.co.uk

min.cc:

template <typename T> 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::ArrayRef<clang::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::ArrayRef<clang::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::ArrayRef<clang::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::ArrayRef<clang::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::SmallVectorImpl<clang::DeducedTemplateArgument>&, unsigned int,
clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&,
llvm::SmallVectorImpl<clang::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::ArrayRef<clang::Expr*>,
clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool,
llvm::function_ref<bool (llvm::ArrayRef<clang::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::ArrayRef<clang::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::ArrayRef<clang::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::ArrayRef<clang::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::ArrayRef<clang::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::SmallVectorImpl<clang::Expr*>&,
llvm::SmallVectorImpl<clang::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::OpaquePtr<clang::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)

-- 
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/20200130/1d9675aa/attachment.html>


More information about the llvm-bugs mailing list