Split type analysis out to its own file, now the integer constant expr evaluation
is ready.

llvm-svn: 39660
diff --git a/clang/CodeGen/CodeGenFunction.h b/clang/CodeGen/CodeGenFunction.h
index b412312..8897d04 100644
--- a/clang/CodeGen/CodeGenFunction.h
+++ b/clang/CodeGen/CodeGenFunction.h
@@ -16,20 +16,16 @@
 
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/Support/LLVMBuilder.h"
-#include <vector>
+#include "CodeGenTypes.h"
 
 namespace llvm {
   class Module;
 }
 
 namespace clang {
-  class SourceLocation;
-  class TargetInfo;
   class ASTContext;
   class Decl;
   class FunctionDecl;
-  class QualType;
-  class FunctionTypeProto;
   
   class Stmt;
   class CompoundStmt;
@@ -125,6 +121,7 @@
   CodeGenModule &CGM;  // Per-module state.
   TargetInfo &Target;
   llvm::LLVMBuilder Builder;
+  CodeGenTypes Types;
   
   const FunctionDecl *CurFuncDecl;
   llvm::Function *CurFn;
@@ -147,13 +144,9 @@
   
   ASTContext &getContext() const;
 
-  const llvm::Type *ConvertType(QualType T, SourceLocation Loc);
-  void DecodeArgumentTypes(const FunctionTypeProto &FTP, 
-                           std::vector<const llvm::Type*> &ArgTys,
-                           SourceLocation Loc);
-  
   void GenerateCode(const FunctionDecl *FD);
   
+  const llvm::Type *ConvertType(QualType T, SourceLocation Loc);
   
   /// getBasicBlockForLabel - Return the LLVM basicblock that the specified
   /// label maps to.