Skip to content

clang crash on template template argument #10015

@llvmbot

Description

@llvmbot
Bugzilla Link 9643
Resolution FIXED
Resolved on Nov 07, 2018 00:17
Version 2.9
OS Linux
Reporter LLVM Bugzilla Contributor
CC @DougGregor,@tkremenek

Extended Description

#include

template<template<typename U, typename = std::allocator > class container,
typename DT>
container

initializer(const DT& d)
{
container
t;
t.insert(t.end(), d);
return t;
}

int main(int, char *[])
{
std::vector v = initializerstd::vector(5);
v.clear();

return 0;
}

0 libLLVM-2.9.so 0x00007fb0dcc5d12f
1 libLLVM-2.9.so 0x00007fb0dcc5ee7a
2 libpthread.so.0 0x00007fb0dbe168f0
3 clang 0x0000000000b6a369 clang::ASTContext::getSubstTemplateTypeParmType(clang::TemplateTypeParmType const*, clang::QualType) const + 265
4 clang 0x00000000009ad280
5 clang 0x00000000009ae3e7
6 clang 0x00000000009a9bf5
7 clang 0x00000000009abef0
8 clang 0x00000000009ad0c2
9 clang 0x00000000009b4ba1
10 clang 0x00000000009ad382
11 clang 0x00000000009ae3e7
12 clang 0x00000000009a9bf5
13 clang 0x00000000009abef0
14 clang 0x00000000009ad0c2
15 clang 0x00000000009b6aed
16 clang 0x00000000009ad8aa
17 clang 0x00000000009b703d clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName) + 445
18 clang 0x00000000009c13df clang::TemplateDeclInstantiator::SubstFunctionType(clang::FunctionDecl*, llvm::SmallVectorImplclang::ParmVarDecl*&) + 79
19 clang 0x00000000009c7213 clang::TemplateDeclInstantiator::VisitFunctionDecl(clang::FunctionDecl*, clang::TemplateParameterList*) + 435
20 clang 0x00000000009c3d7d clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&) + 125
21 clang 0x000000000099508a clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl*, llvm::SmallVectorImplclang::DeducedTemplateArgument&, unsigned int, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&) + 2634
22 clang 0x00000000009968e1 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, clang::Expr**, unsigned int, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&) + 1281
23 clang 0x0000000000909f11 clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, clang::Expr**, unsigned int, clang::OverloadCandidateSet&, bool) + 337
24 clang 0x0000000000914f91 clang::Sema::AddOverloadedCallCandidates(clang::UnresolvedLookupExpr*, clang::Expr**, unsigned int, clang::OverloadCandidateSet&, bool) + 481
25 clang 0x00000000009194c7 clang::Sema::BuildOverloadedCallExpr(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation, clang::Expr*) + 199
26 clang 0x00000000008aba42 clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, clang::ASTMultiPtrclang::Expr*, clang::SourceLocation, clang::Expr*) + 1490
27 clang 0x0000000000769531 clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>) + 2481
28 clang 0x000000000076a718 clang::Parser::ParseCastExpression(bool, bool, bool&, clang::OpaquePtrclang::QualType) + 200
29 clang 0x000000000076b55a clang::Parser::ParseCastExpression(bool, bool, clang::OpaquePtrclang::QualType) + 42
30 clang 0x000000000076ade3 clang::Parser::ParseCastExpression(bool, bool, bool&, clang::OpaquePtrclang::QualType) + 1939
31 clang 0x000000000076b55a clang::Parser::ParseCastExpression(bool, bool, clang::OpaquePtrclang::QualType) + 42
32 clang 0x000000000076c1ee clang::Parser::ParseAssignmentExpression() + 30
33 clang 0x0000000000753730 clang::Parser::ParseDeclarationAfterDeclarator(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&) + 544
34 clang 0x00000000007556c2 clang::Parser::ParseDeclGroup(clang::Parser::ParsingDeclSpec&, unsigned int, bool, clang::SourceLocation*) + 786
35 clang 0x000000000075e6ab clang::Parser::ParseSimpleDeclaration(clang::ASTOwningVector<clang::Stmt*, 32u>&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, bool) + 635
36 clang 0x000000000075e822 clang::Parser::ParseDeclaration(clang::ASTOwningVector<clang::Stmt*, 32u>&, unsigned int, clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&) + 98
37 clang 0x0000000000742f12 clang::Parser::ParseStatementOrDeclaration(clang::ASTOwningVector<clang::Stmt*, 32u>&, bool) + 194
38 clang 0x0000000000743eef clang::Parser::ParseCompoundStatementBody(bool) + 1551
39 clang 0x00000000007445ed clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) + 157
40 clang 0x000000000074ea9a clang::Parser::ParseFunctionDefinition(clang::Parser::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&) + 474
41 clang 0x0000000000755e40 clang::Parser::ParseDeclGroup(clang::Parser::ParsingDeclSpec&, unsigned int, bool, clang::SourceLocation*) + 2704
42 clang 0x000000000074d6a2 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsingDeclSpec&, clang::AccessSpecifier) + 146
43 clang 0x000000000074dad0 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::AccessSpecifier) + 448
44 clang 0x000000000074fc8a clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::Parser::ParsingDeclSpec*) + 1578
45 clang 0x000000000074fd5d clang::Parser::ParseTopLevelDecl(clang::OpaquePtrclang::DeclGroupRef&) + 109
46 clang 0x0000000000737d6b clang::ParseAST(clang::Sema&, bool) + 139
47 clang 0x0000000000621273 clang::CodeGenAction::ExecuteAction() + 51
48 clang 0x000000000052e7ab clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 283
49 clang 0x000000000050d57c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1196
50 clang 0x00000000005053b5 cc1_main(char const**, char const**, char const*, void*) + 709
51 clang 0x000000000050c6d4 main + 4724
52 libc.so.6 0x00007fb0db0f0c4d __libc_start_main + 253
53 clang 0x0000000000503a29
Stack dump:
0. Program arguments: /usr/local/bin/clang -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name 3709_noace.cpp -mrelocation-model static -mdisable-fp-elim -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -target-linker-version 2.20.1 -momit-leaf-frame-pointer -g -resource-dir /usr/local/bin/../lib/clang/2.9 -O0 -ferror-limit 19 -fmessage-length 80 -fcxx-exceptions -fexceptions -fgnu-runtime -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/cc-BiYr15.o -x c++ 3709_noace.cpp

  1.  3709_noace.cpp:14:50: current parser token ')'
    
  2.  3709_noace.cpp:13:1: parsing function body 'main'
    
  3.  3709_noace.cpp:13:1: in compound statement ('{}')
    

clang: error: unable to execute command: Segmentation fault (core dumped)
clang: error: clang frontend command failed due to signal 1 (use -v to see invocation)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillac++

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions