summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/AST/ASTContext.cpp8
-rw-r--r--clang/lib/AST/TranslationUnit.cpp12
-rw-r--r--clang/lib/Sema/ParseAST.cpp5
3 files changed, 13 insertions, 12 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index a87efa7425e..2fe1f515c0c 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -1701,6 +1701,7 @@ bool ASTContext::typesAreCompatible(QualType LHS_NC, QualType RHS_NC) {
/// Emit - Serialize an ASTContext object to Bitcode.
void ASTContext::Emit(llvm::Serializer& S) const {
+ S.Emit(LangOpts);
S.EmitRef(SourceMgr);
S.EmitRef(Target);
S.EmitRef(Idents);
@@ -1720,6 +1721,11 @@ void ASTContext::Emit(llvm::Serializer& S) const {
}
ASTContext* ASTContext::Create(llvm::Deserializer& D) {
+
+ // Read the language options.
+ LangOptions LOpts;
+ LOpts.Read(D);
+
SourceManager &SM = D.ReadRef<SourceManager>();
TargetInfo &t = D.ReadRef<TargetInfo>();
IdentifierTable &idents = D.ReadRef<IdentifierTable>();
@@ -1727,7 +1733,7 @@ ASTContext* ASTContext::Create(llvm::Deserializer& D) {
unsigned size_reserve = D.ReadInt();
- ASTContext* A = new ASTContext(SM,t,idents,sels,size_reserve);
+ ASTContext* A = new ASTContext(LOpts, SM, t, idents, sels, size_reserve);
for (unsigned i = 0; i < size_reserve; ++i)
Type::Create(*A,i,D);
diff --git a/clang/lib/AST/TranslationUnit.cpp b/clang/lib/AST/TranslationUnit.cpp
index f1505b06218..f8416f18fa1 100644
--- a/clang/lib/AST/TranslationUnit.cpp
+++ b/clang/lib/AST/TranslationUnit.cpp
@@ -124,16 +124,13 @@ void TranslationUnit::Emit(llvm::Serializer& Sezr) const {
Sezr.EnterBlock(BasicMetadataBlock);
- // Block for SourceManager, LangOptions, and Target. Allows easy skipping
+ // Block for SourceManager and Target. Allows easy skipping
// around to the block for the Selectors during deserialization.
Sezr.EnterBlock();
// Emit the SourceManager.
Sezr.Emit(Context->getSourceManager());
-
- // Emit the LangOptions.
- Sezr.Emit(LangOpts);
-
+
// Emit the Target.
Sezr.EmitPtr(&Context->Target);
Sezr.EmitCStr(Context->Target.getTargetTriple());
@@ -211,10 +208,7 @@ TranslationUnit* TranslationUnit::Create(llvm::Deserializer& Dezr,
// Read the SourceManager.
SourceManager::CreateAndRegister(Dezr,FMgr);
-
- // Read the LangOptions.
- TU->LangOpts.Read(Dezr);
-
+
{ // Read the TargetInfo.
llvm::SerializedPtrID PtrID = Dezr.ReadPtrID();
char* triple = Dezr.ReadCStr(NULL,0,true);
diff --git a/clang/lib/Sema/ParseAST.cpp b/clang/lib/Sema/ParseAST.cpp
index 9199179af74..67b6546637f 100644
--- a/clang/lib/Sema/ParseAST.cpp
+++ b/clang/lib/Sema/ParseAST.cpp
@@ -34,10 +34,11 @@ void clang::ParseAST(Preprocessor &PP, ASTConsumer *Consumer, bool PrintStats) {
Stmt::CollectingStats(true);
}
- ASTContext Context(PP.getSourceManager(), PP.getTargetInfo(),
+ ASTContext Context(PP.getLangOptions(), PP.getSourceManager(),
+ PP.getTargetInfo(),
PP.getIdentifierTable(), PP.getSelectorTable());
- TranslationUnit TU(Context, PP.getLangOptions());
+ TranslationUnit TU(Context);
Sema S(PP, Context, *Consumer);
Parser P(PP, S);
OpenPOWER on IntegriCloud