]> granicus.if.org Git - clang/commitdiff
Fix a regression from r164656.
authorEli Friedman <eli.friedman@gmail.com>
Thu, 27 Sep 2012 22:13:33 +0000 (22:13 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Thu, 27 Sep 2012 22:13:33 +0000 (22:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164804 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/TypeLoc.cpp
test/SemaTemplate/deduction-crash.cpp

index 945e783835b249a0a0a7c5cc8f525cdb2995f418..4c103dbf544ae608bc44c4e86bf077634d770b06 100644 (file)
@@ -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;
     }
   }
 }
index ab5e465680001c385f85d25bb1563af2b413e7e9..0714c5e51648aae253baad370b02fac80d9eb0f9 100644 (file)
@@ -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;
+}