diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-03-18 22:23:49 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-03-18 22:23:49 +0000 |
| commit | ca370b0d1f0ff4ca2bc55bf30052f6c81c8b0609 (patch) | |
| tree | 867ece2a6a3df59e5466fdfa0ddd8e0f1b510f7f | |
| parent | 7ee730414dc1f449e3de059f70a3d8a7fd1ea5fb (diff) | |
| download | bcm5719-llvm-ca370b0d1f0ff4ca2bc55bf30052f6c81c8b0609.tar.gz bcm5719-llvm-ca370b0d1f0ff4ca2bc55bf30052f6c81c8b0609.zip | |
[PCH] Fix assertion hit related to enum decls inside templated funtions.
Report and suggested fix by Tom Honermann!
http://llvm.org/bugs/show_bug.cgi?id=13020
llvm-svn: 177330
| -rw-r--r-- | clang/lib/Serialization/ASTWriterDecl.cpp | 1 | ||||
| -rw-r--r-- | clang/test/PCH/cxx-templates.h | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp b/clang/lib/Serialization/ASTWriterDecl.cpp index 6c63a149c2b..d8b5b911084 100644 --- a/clang/lib/Serialization/ASTWriterDecl.cpp +++ b/clang/lib/Serialization/ASTWriterDecl.cpp @@ -253,6 +253,7 @@ void ASTDeclWriter::VisitEnumDecl(EnumDecl *D) { !D->isModulePrivate() && !CXXRecordDecl::classofKind(D->getKind()) && !D->getIntegerTypeSourceInfo() && + !D->getMemberSpecializationInfo() && D->getDeclName().getNameKind() == DeclarationName::Identifier) AbbrevToUse = Writer.getDeclEnumAbbrev(); diff --git a/clang/test/PCH/cxx-templates.h b/clang/test/PCH/cxx-templates.h index 3dda0590264..00631ddbfb9 100644 --- a/clang/test/PCH/cxx-templates.h +++ b/clang/test/PCH/cxx-templates.h @@ -246,3 +246,16 @@ struct __mt_alloc { } }; } + +namespace PR13020 { +template<typename T> +void f() { + enum E { + enumerator + }; + + T t = enumerator; +} + +template void f<int>(); +} |

