<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>