aboutsummaryrefslogtreecommitdiff
path: root/Driver/SerializationTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Driver/SerializationTest.cpp')
-rw-r--r--Driver/SerializationTest.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/Driver/SerializationTest.cpp b/Driver/SerializationTest.cpp
index 086d5587e9..6e9309dc28 100644
--- a/Driver/SerializationTest.cpp
+++ b/Driver/SerializationTest.cpp
@@ -33,21 +33,22 @@ using namespace clang;
namespace {
class SerializationTest : public ASTConsumer {
- TranslationUnit TU;
+ llvm::OwningPtr<TranslationUnit> TU;
Diagnostic &Diags;
FileManager &FMgr;
+ const LangOptions& lopts;
public:
SerializationTest(Diagnostic &d, FileManager& fmgr, const LangOptions& LOpts)
- : TU(LOpts), Diags(d), FMgr(fmgr) {}
+ : Diags(d), FMgr(fmgr), lopts(LOpts) {}
~SerializationTest();
virtual void Initialize(ASTContext& context) {
- TU.setContext(&context);
+ if (!TU) TU.reset(new TranslationUnit(context, lopts));
}
virtual void HandleTopLevelDecl(Decl *D) {
- TU.AddTopLevelDecl(D);
+ TU->AddTopLevelDecl(D);
}
private:
@@ -73,12 +74,12 @@ bool SerializationTest::Serialize(llvm::sys::Path& Filename,
assert (DeclPP && "Could not open file for printing out decls.");
llvm::OwningPtr<ASTConsumer> FilePrinter(CreateASTPrinter(&DeclPP));
- for (TranslationUnit::iterator I=TU.begin(), E=TU.end(); I!=E; ++I)
+ for (TranslationUnit::iterator I=TU->begin(), E=TU->end(); I!=E; ++I)
FilePrinter->HandleTopLevelDecl(*I);
}
// Serialize the translation unit.
- return EmitASTBitcodeFile(TU,Filename);
+ return EmitASTBitcodeFile(*TU,Filename);
}
bool SerializationTest::Deserialize(llvm::sys::Path& Filename,