Preserve type source information when substituting into ParmVarDecls.

Apparently I'm grinding my commit count.

llvm-svn: 84735
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 14d8c35..0bd4ee5 100644
--- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -774,23 +774,23 @@
 }
 
 ParmVarDecl *TemplateDeclInstantiator::VisitParmVarDecl(ParmVarDecl *D) {
-  QualType OrigT = SemaRef.SubstType(D->getOriginalType(), TemplateArgs,
-                                           D->getLocation(), D->getDeclName());
-  if (OrigT.isNull())
+  DeclaratorInfo *OrigT = SemaRef.SubstType(D->DeclaratorInfo(), TemplateArgs,
+                                            D->getLocation(), D->getDeclName());
+  if (!OrigT)
     return 0;
 
-  QualType T = SemaRef.adjustParameterType(OrigT);
+  QualType T = SemaRef.adjustParameterType(OrigT->getType());
 
   // Allocate the parameter
   ParmVarDecl *Param = 0;
-  if (T == OrigT)
+  if (T == OrigT->getType())
     Param = ParmVarDecl::Create(SemaRef.Context, Owner, D->getLocation(),
-                                D->getIdentifier(), T, D->getDeclaratorInfo(),
+                                D->getIdentifier(), T, OrigT,
                                 D->getStorageClass(), 0);
   else
     Param = OriginalParmVarDecl::Create(SemaRef.Context, Owner,
                                         D->getLocation(), D->getIdentifier(),
-                                        T, D->getDeclaratorInfo(), OrigT,
+                                        T, OrigT, OrigT->getType(),
                                         D->getStorageClass(), 0);
 
   // Mark the default argument as being uninstantiated.