<html>
<head>
<base href="http://llvm.org/bugs/" />
</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 --- - crash during TemplateSpecializationType"
href="http://llvm.org/bugs/show_bug.cgi?id=17646">17646</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>crash during TemplateSpecializationType
</td>
</tr>
<tr>
<th>Product</th>
<td>clang
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</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>david.majnemer@gmail.com
</td>
</tr>
<tr>
<th>CC</th>
<td>dgregor@apple.com, llvmbugs@cs.uiuc.edu
</td>
</tr>
<tr>
<th>Classification</th>
<td>Unclassified
</td>
</tr></table>
<p>
<div>
<pre>testcase.cpp:
template <int>
struct L {};
template <int k>
template <typename T>
void L<k>::O<T>::Fun() {}
L<0>::O<int>::Fun();
crashes with:
~/llvm/src/tools/clang/lib/AST/Type.cpp:1994:
clang::TemplateSpecializationType::TemplateSpecializationType(clang::TemplateName,
const clang::TemplateArgument*, unsigned int, clang::QualType,
clang::QualType): Assertion `(!Canon.isNull() || T.isDependent() ||
::anyDependentTemplateArguments(Args, NumArgs, InstantiationDependent)) && "No
canonical type for non-dependent class template specialization"' failed.
0 clang++ 0x0000000001e0c8e7 llvm::sys::PrintStackTrace(_IO_FILE*) +
38
1 clang++ 0x0000000001e0cb6e
2 clang++ 0x0000000001e0c5b2
3 libpthread.so.0 0x00007f148a162cb0
4 libc.so.6 0x00007f14895b7425 gsignal + 53
5 libc.so.6 0x00007f14895bab8b abort + 379
6 libc.so.6 0x00007f14895b00ee
7 libc.so.6 0x00007f14895b0192
8 clang++ 0x0000000003282aef
clang::TemplateSpecializationType::TemplateSpecializationType(clang::TemplateName,
clang::TemplateArgument const*, unsigned int, clang::QualType, clang::QualType)
+ 587
9 clang++ 0x00000000030b077a
clang::ASTContext::getCanonicalTemplateSpecializationType(clang::TemplateName,
clang::TemplateArgument const*, unsigned int) const + 696
10 clang++ 0x00000000030b03bb
clang::ASTContext::getTemplateSpecializationType(clang::TemplateName,
clang::TemplateArgument const*, unsigned int, clang::QualType) const + 427
11 clang++ 0x00000000030b0185
clang::ASTContext::getTemplateSpecializationType(clang::TemplateName,
clang::TemplateArgumentListInfo const&, clang::QualType) const + 311
12 clang++ 0x00000000025ee10a
clang::Sema::CheckTemplateIdType(clang::TemplateName, clang::SourceLocation,
clang::TemplateArgumentListInfo&) + 2668
13 clang++ 0x00000000022d774a
clang::Sema::ActOnCXXNestedNameSpecifier(clang::Scope*, clang::CXXScopeSpec&,
clang::SourceLocation, clang::OpaquePtr<clang::TemplateName>,
clang::SourceLocation, clang::SourceLocation,
llvm::MutableArrayRef<clang::ParsedTemplateArgument>, clang::SourceLocation,
clang::SourceLocation, bool) + 1430
14 clang++ 0x0000000002256a17
clang::Parser::ParseOptionalCXXScopeSpecifier(clang::CXXScopeSpec&,
clang::OpaquePtr<clang::QualType>, bool, bool*, bool, clang::IdentifierInfo**)
+ 2659
15 clang++ 0x0000000002217895
clang::Parser::TryAnnotateCXXScopeToken(bool) + 321
16 clang++ 0x0000000002228c4f
clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&,
clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier,
clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*) + 3511
17 clang++ 0x000000000221454b
clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec&, clang::AccessSpecifier) + 101
18 clang++ 0x00000000022149e5
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier) + 189
19 clang++ 0x0000000002214199
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) + 2783
20 clang++ 0x0000000002213689
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 415
21 clang++ 0x000000000220fed9 clang::ParseAST(clang::Sema&, bool, bool)
+ 597
22 clang++ 0x000000000210a48b clang::ASTFrontendAction::ExecuteAction()
+ 321
23 clang++ 0x0000000002109fca clang::FrontendAction::Execute() + 200
24 clang++ 0x00000000020e224c
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 720
25 clang++ 0x0000000001e13085
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1018
26 clang++ 0x0000000000cf55eb cc1_main(char const**, char const**, char
const*, void*) + 717
27 clang++ 0x0000000000cefb2e main + 786
28 libc.so.6 0x00007f14895a276d __libc_start_main + 237
29 clang++ 0x0000000000cee429
Stack dump:
0. Program arguments: ~/llvm/build/bin/clang++ -cc1 testcase.cpp
-fsyntax-only
1. testcase.cpp:6:15: current parser token 'Fun'
zsh: abort (core dumped) ~/llvm/build/bin/clang++ -cc1 testcase.cpp</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>