Added ASTContext::setObjcIdType/getObjcIdType(), set by Sema.

Also noticed ASTContext::BuiltinVaListType wasn't being initialized to the null type (so I set it).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42983 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Sema/Sema.cpp b/Sema/Sema.cpp
index 9487ed0..330d9dc 100644
--- a/Sema/Sema.cpp
+++ b/Sema/Sema.cpp
@@ -31,17 +31,18 @@
 /// For now, we will *not* install id as a built-in. FIXME: reconsider this.
 QualType Sema::GetObjcIdType(SourceLocation Loc) {
   assert(TUScope && "GetObjcIdType(): Top-level scope is null");
-  if (!ObjcIdTypedef) {
+  if (Context.getObjcIdType().isNull()) {
     IdentifierInfo *IdIdent = &Context.Idents.get("id");
     ScopedDecl *IdDecl = LookupScopedDecl(IdIdent, Decl::IDNS_Ordinary, 
                                           SourceLocation(), TUScope);
-    ObjcIdTypedef = dyn_cast_or_null<TypedefDecl>(IdDecl);
+    TypedefDecl *ObjcIdTypedef = dyn_cast_or_null<TypedefDecl>(IdDecl);
     if (!ObjcIdTypedef) {
       Diag(Loc, diag::err_missing_id_definition);
       return QualType();
     }
+    Context.setObjcIdType(ObjcIdTypedef);
   }
-  return Context.getTypedefType(ObjcIdTypedef);
+  return Context.getObjcIdType();
 }
 
 
@@ -64,7 +65,6 @@
   KnownFunctionIDs[ id_vprintf ] = &IT.get("vprintf");
   
   TUScope = 0;
-  ObjcIdTypedef = 0;
 }
 
 void Sema::DeleteExpr(ExprTy *E) {