Moved LangOptions from TranslationUnit to ASTContext. This induced a variety of cleanups in some ASTConsumers.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51943 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/ASTConsumers.cpp b/Driver/ASTConsumers.cpp
index 9ab6157..5d45f31 100644
--- a/Driver/ASTConsumers.cpp
+++ b/Driver/ASTConsumers.cpp
@@ -868,12 +868,10 @@
class ASTSerializer : public ASTConsumer {
protected:
Diagnostic &Diags;
- const LangOptions& lang;
TranslationUnit* TU;
public:
- ASTSerializer(Diagnostic& diags, const LangOptions& LO)
- : Diags(diags), lang(LO), TU(0) {}
+ ASTSerializer(Diagnostic& diags) : Diags(diags), TU(0) {}
virtual ~ASTSerializer() { delete TU; }
@@ -892,9 +890,8 @@
class SingleFileSerializer : public ASTSerializer {
const llvm::sys::Path FName;
public:
- SingleFileSerializer(const llvm::sys::Path& F, Diagnostic &diags,
- const LangOptions &LO)
- : ASTSerializer(diags,LO), FName(F) {}
+ SingleFileSerializer(const llvm::sys::Path& F, Diagnostic &diags)
+ : ASTSerializer(diags), FName(F) {}
~SingleFileSerializer() {
EmitASTBitcodeFile(TU, FName);
@@ -904,9 +901,8 @@
class BuildSerializer : public ASTSerializer {
llvm::sys::Path EmitDir;
public:
- BuildSerializer(const llvm::sys::Path& dir, Diagnostic &diags,
- const LangOptions &LO)
- : ASTSerializer(diags,LO), EmitDir(dir) {}
+ BuildSerializer(const llvm::sys::Path& dir, Diagnostic &diags)
+ : ASTSerializer(diags), EmitDir(dir) {}
~BuildSerializer() {
@@ -950,8 +946,7 @@
ASTConsumer* clang::CreateASTSerializer(const std::string& InFile,
const std::string& OutputFile,
- Diagnostic &Diags,
- const LangOptions &Features) {
+ Diagnostic &Diags) {
if (OutputFile.size()) {
if (InFile == "-") {
@@ -982,7 +977,7 @@
// FIXME: We should probably only allow using BuildSerializer when
// the ASTs come from parsed source files, and not from .ast files.
- return new BuildSerializer(EmitDir, Diags, Features);
+ return new BuildSerializer(EmitDir, Diags);
}
// The user did not specify an output directory for serialized ASTs.
@@ -991,5 +986,5 @@
llvm::sys::Path FName(InFile.c_str());
FName.appendSuffix("ast");
- return new SingleFileSerializer(FName, Diags, Features);
+ return new SingleFileSerializer(FName, Diags);
}
diff --git a/Driver/ASTConsumers.h b/Driver/ASTConsumers.h
index 7037ade..ca93e0f 100644
--- a/Driver/ASTConsumers.h
+++ b/Driver/ASTConsumers.h
@@ -67,13 +67,11 @@
Preprocessor *PP, PreprocessorFactory* PPF);
ASTConsumer *CreateSerializationTest(Diagnostic &Diags,
- FileManager& FMgr,
- const LangOptions &LOpts);
+ FileManager& FMgr);
ASTConsumer *CreateASTSerializer(const std::string& InFile,
const std::string& EmitDir,
- Diagnostic &Diags,
- const LangOptions &LOpts);
+ Diagnostic &Diags);
} // end clang namespace
diff --git a/Driver/SerializationTest.cpp b/Driver/SerializationTest.cpp
index 5f7b94f..946a4c8 100644
--- a/Driver/SerializationTest.cpp
+++ b/Driver/SerializationTest.cpp
@@ -33,26 +33,16 @@
namespace {
class SerializationTest : public ASTConsumer {
- llvm::OwningPtr<TranslationUnit> TU;
+ TranslationUnit* TU;
Diagnostic &Diags;
FileManager &FMgr;
- const LangOptions& lopts;
public:
- SerializationTest(Diagnostic &d, FileManager& fmgr, const LangOptions& LOpts)
- : Diags(d), FMgr(fmgr), lopts(LOpts) {}
+ SerializationTest(Diagnostic &d, FileManager& fmgr)
+ : TU(0), Diags(d), FMgr(fmgr) {}
~SerializationTest();
- virtual void Initialize(ASTContext& context) {
- if (!TU) {
- TU.reset(new TranslationUnit(context, lopts));
- TU->SetOwnsDecls(false);
- }
- }
-
- virtual void HandleTopLevelDecl(Decl *D) {
- TU->AddTopLevelDecl(D);
- }
+ virtual void InitializeTU(TranslationUnit& tu) { TU = &tu; }
private:
bool Serialize(llvm::sys::Path& Filename, llvm::sys::Path& FNameDeclPrint);
@@ -62,10 +52,8 @@
} // end anonymous namespace
ASTConsumer*
-clang::CreateSerializationTest(Diagnostic &Diags, FileManager& FMgr,
- const LangOptions &LOpts) {
-
- return new SerializationTest(Diags,FMgr,LOpts);
+clang::CreateSerializationTest(Diagnostic &Diags, FileManager& FMgr) {
+ return new SerializationTest(Diags, FMgr);
}
@@ -89,7 +77,7 @@
llvm::sys::Path& FNameDeclPrint) {
// Deserialize the translation unit.
- TranslationUnit* NewTU = ReadASTBitcodeFile(Filename,FMgr);
+ TranslationUnit* NewTU = ReadASTBitcodeFile(Filename, FMgr);
if (!NewTU)
return false;
diff --git a/Driver/clang.cpp b/Driver/clang.cpp
index 7a61145..df41e54 100644
--- a/Driver/clang.cpp
+++ b/Driver/clang.cpp
@@ -1189,7 +1189,7 @@
OutputFile, VisualizeEG, TrimGraph, AnalyzeAll);
case TestSerialization:
- return CreateSerializationTest(Diag, FileMgr, LangOpts);
+ return CreateSerializationTest(Diag, FileMgr);
case EmitLLVM:
case EmitBC:
@@ -1198,7 +1198,7 @@
case SerializeAST:
// FIXME: Allow user to tailor where the file is written.
- return CreateASTSerializer(InFile, OutputFile, Diag, LangOpts);
+ return CreateASTSerializer(InFile, OutputFile, Diag);
case RewriteObjC:
return CreateCodeRewriterTest(InFile, OutputFile, Diag, LangOpts);
@@ -1362,8 +1362,8 @@
// translation unit, rather than InFile.
llvm::Module *DestModule;
llvm::OwningPtr<ASTConsumer>
- Consumer(CreateASTConsumer(InFile, Diag, FileMgr, TU->getLangOpts(), 0, 0,
- DestModule));
+ Consumer(CreateASTConsumer(InFile, Diag, FileMgr, TU->getLangOptions(),
+ 0, 0, DestModule));
if (!Consumer) {
fprintf(stderr, "Unsupported program action with serialized ASTs!\n");