More #include cleaning
 - Drop Expr.h,RecordLayout.h from ASTContext.h (for DeclBase.h and
   SourceLocation.h)
 - Move ASTContext constructor into implementation


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54627 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp
index 0325ba5..5c39c2b 100644
--- a/lib/AST/ASTContext.cpp
+++ b/lib/AST/ASTContext.cpp
@@ -15,6 +15,8 @@
 #include "clang/AST/Decl.h"
 #include "clang/AST/DeclCXX.h"
 #include "clang/AST/DeclObjC.h"
+#include "clang/AST/Expr.h"
+#include "clang/AST/RecordLayout.h"
 #include "clang/Basic/TargetInfo.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/StringExtras.h"
@@ -27,6 +29,18 @@
   FloatRank, DoubleRank, LongDoubleRank
 };
 
+ASTContext::ASTContext(const LangOptions& LOpts, SourceManager &SM, TargetInfo &t,
+                       IdentifierTable &idents, SelectorTable &sels,
+                       unsigned size_reserve) : 
+  CFConstantStringTypeDecl(0), SourceMgr(SM), LangOpts(LOpts), Target(t), 
+  Idents(idents), Selectors(sels) 
+{  
+  if (size_reserve > 0) Types.reserve(size_reserve);    
+  InitBuiltinTypes();
+  BuiltinInfo.InitializeBuiltins(idents, Target);
+  TUDecl = TranslationUnitDecl::Create(*this);
+}
+
 ASTContext::~ASTContext() {
   // Deallocate all the types.
   while (!Types.empty()) {