Implement a more sensible strategy for ObjC built-in types (addressing a long standing FIXME in Sema::GetObjcIdType()).

This removes several gross hacks to work around the previous "lazy" behavior.

Two notes:
- MinimalActions still needs to be taught about the built-in types (This breaks one of the -noop test cases). I started this, then added a FIXME.
- I didn't convert Sema::GetObjcProtoType() yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43567 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Sema/Sema.h b/Sema/Sema.h
index 13ba636..3b8b5e9 100644
--- a/Sema/Sema.h
+++ b/Sema/Sema.h
@@ -275,17 +275,11 @@
   bool MatchTwoMethodDeclarations(const ObjcMethodDecl *Method, 
                                   const ObjcMethodDecl *PrevMethod); 
 
-  /// GetObjcIdType - Getter for the build-in "id" type.
-  QualType GetObjcIdType(SourceLocation Loc = SourceLocation());
-  
-  /// GetObjcSelType - Getter for the build-in "SEL" type.
-  QualType GetObjcSelType(SourceLocation Loc = SourceLocation());
-  
   /// GetObjcSelType - Getter for the build-in "Protocol *" type.
   QualType GetObjcProtoType(SourceLocation Loc = SourceLocation());
   
-  // GetObjcClassType - Getter for the built-in "Class" type.
-  QualType GetObjcClassType(SourceLocation Loc = SourceLocation());
+  /// isBuiltinObjcType - Returns true of the type is "id", "SEL", "Class".
+  bool isBuiltinObjcType(TypedefDecl *TD);
 
   /// AddInstanceMethodToGlobalPool - All instance methods in a translation
   /// unit are added to a global pool. This allows us to efficiently associate