diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2012-09-27 22:13:33 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2012-09-27 22:13:33 +0000 |
commit | 919a2d7a63eec8f6e1e95e85306e0dc21ef91883 (patch) | |
tree | 5ef744df394cbc437b7055eceb826a8c1a1d25b3 | |
parent | bf24792e00a47fd9d74ff21e21d2cbffc6d62818 (diff) |
Fix a regression from r164656.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164804 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/AST/TypeLoc.cpp | 7 | ||||
-rw-r--r-- | test/SemaTemplate/deduction-crash.cpp | 11 |
2 files changed, 16 insertions, 2 deletions
diff --git a/lib/AST/TypeLoc.cpp b/lib/AST/TypeLoc.cpp index 945e783835..4c103dbf54 100644 --- a/lib/AST/TypeLoc.cpp +++ b/lib/AST/TypeLoc.cpp @@ -301,7 +301,6 @@ void TemplateSpecializationTypeLoc::initializeArgLocs(ASTContext &Context, case TemplateArgument::Null: case TemplateArgument::Declaration: case TemplateArgument::Integral: - case TemplateArgument::Pack: case TemplateArgument::NullPtr: llvm_unreachable("Impossible TemplateArgument"); @@ -331,7 +330,11 @@ void TemplateSpecializationTypeLoc::initializeArgLocs(ASTContext &Context, ? SourceLocation() : Loc); break; - } + } + + case TemplateArgument::Pack: + ArgInfos[i] = TemplateArgumentLocInfo(); + break; } } } diff --git a/test/SemaTemplate/deduction-crash.cpp b/test/SemaTemplate/deduction-crash.cpp index ab5e465680..0714c5e516 100644 --- a/test/SemaTemplate/deduction-crash.cpp +++ b/test/SemaTemplate/deduction-crash.cpp @@ -99,3 +99,14 @@ namespacae PR12933 { return 0; } } + +// A buildbot failure from libcxx +namespace libcxx_test { + template <class _Ptr, bool> struct __pointer_traits_element_type; + template <class _Ptr> struct __pointer_traits_element_type<_Ptr, true>; + template <template <class, class...> class _Sp, class _Tp, class ..._Args> struct __pointer_traits_element_type<_Sp<_Tp, _Args...>, true> { + typedef char type; + }; + template <class T> struct B {}; + __pointer_traits_element_type<B<int>, true>::type x; +} |