Fix various bugs in recent commits for C++ PCH.

llvm-svn: 106995
diff --git a/clang/lib/Frontend/PCHReader.cpp b/clang/lib/Frontend/PCHReader.cpp
index c220e26..3864624 100644
--- a/clang/lib/Frontend/PCHReader.cpp
+++ b/clang/lib/Frontend/PCHReader.cpp
@@ -3012,8 +3012,11 @@
     return TemplateArgument(GetType(Record[Idx++]));
   case TemplateArgument::Declaration:
     return TemplateArgument(GetDecl(Record[Idx++]));
-  case TemplateArgument::Integral:
-    return TemplateArgument(ReadAPSInt(Record, Idx), GetType(Record[Idx++]));
+  case TemplateArgument::Integral: {
+    llvm::APSInt Value = ReadAPSInt(Record, Idx);
+    QualType T = GetType(Record[Idx++]);
+    return TemplateArgument(Value, T);
+  }
   case TemplateArgument::Template:
     return TemplateArgument(ReadTemplateName(Record, Idx));
   case TemplateArgument::Expression: