[cfe-commits] r44555 - in /cfe/trunk/Driver: ASTConsumers.h SerializationTest.cpp clang.cpp
Ted Kremenek
kremenek at apple.com
Mon Dec 3 14:48:15 PST 2007
Author: kremenek
Date: Mon Dec 3 16:48:14 2007
New Revision: 44555
URL: http://llvm.org/viewvc/llvm-project?rev=44555&view=rev
Log:
Implemented serialization of TargetInfo.
SerializationTest (subclass of ASTConsumer) now takes Diagnostics& in its ctor.
Modified:
cfe/trunk/Driver/ASTConsumers.h
cfe/trunk/Driver/SerializationTest.cpp
cfe/trunk/Driver/clang.cpp
Modified: cfe/trunk/Driver/ASTConsumers.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/ASTConsumers.h?rev=44555&r1=44554&r2=44555&view=diff
==============================================================================
--- cfe/trunk/Driver/ASTConsumers.h (original)
+++ cfe/trunk/Driver/ASTConsumers.h Mon Dec 3 16:48:14 2007
@@ -31,7 +31,7 @@
ASTConsumer *CreateUnitValsChecker(Diagnostic &Diags);
ASTConsumer *CreateLLVMEmitter(Diagnostic &Diags, const LangOptions &Features);
ASTConsumer *CreateCodeRewriterTest(Diagnostic &Diags);
-ASTConsumer *CreateSerializationTest();
+ASTConsumer *CreateSerializationTest(Diagnostic &Diags);
} // end clang namespace
Modified: cfe/trunk/Driver/SerializationTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/SerializationTest.cpp?rev=44555&r1=44554&r2=44555&view=diff
==============================================================================
--- cfe/trunk/Driver/SerializationTest.cpp (original)
+++ cfe/trunk/Driver/SerializationTest.cpp Mon Dec 3 16:48:14 2007
@@ -15,10 +15,12 @@
//===----------------------------------------------------------------------===//
#include "ASTConsumers.h"
+#include "clang/Basic/TargetInfo.h"
#include "clang/AST/AST.h"
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/CFG.h"
+#include "clang.h"
#include "llvm/System/Path.h"
#include "llvm/Support/Streams.h"
#include "llvm/Support/MemoryBuffer.h"
@@ -51,6 +53,7 @@
class SerializationTest : public ASTConsumer {
ASTContext* Context;
+ Diagnostic &Diags;
std::list<Decl*> Decls;
enum { BasicMetadataBlock = 1,
@@ -58,7 +61,7 @@
DeclsBlock = 3 };
public:
- SerializationTest() : Context(NULL) {};
+ SerializationTest(Diagnostic &d) : Context(NULL), Diags(d) {};
~SerializationTest();
virtual void Initialize(ASTContext& context, unsigned) {
@@ -76,8 +79,8 @@
} // end anonymous namespace
-ASTConsumer* clang::CreateSerializationTest() {
- return new SerializationTest();
+ASTConsumer* clang::CreateSerializationTest(Diagnostic &Diags) {
+ return new SerializationTest(Diags);
}
static void WritePreamble(llvm::BitstreamWriter& Stream) {
@@ -171,9 +174,10 @@
llvm::cerr << "Faux-serializing: SourceManager.\n";
Sezr.EmitPtr(&Context->SourceMgr);
- // "Fake" emit the Target.
- llvm::cerr << "Faux-serializing: Target.\n";
+ // Emit the Target.
+ llvm::cerr << "Serializing: Target.\n";
Sezr.EmitPtr(&Context->Target);
+ Sezr.EmitCStr(Context->Target.getTargetTriple());
Sezr.ExitBlock();
@@ -256,13 +260,21 @@
llvm::cerr << "Faux-Deserializing: SourceManager.\n";
Dezr.RegisterPtr(&Context->SourceMgr);
- // "Fake" read the TargetInfo.
- llvm::cerr << "Faux-Deserializing: Target.\n";
- Dezr.RegisterPtr(&Context->Target);
-
+ { // Read the TargetInfo.
+ llvm::cerr << "Deserializing: Target.\n";
+ llvm::SerializedPtrID PtrID = Dezr.ReadPtrID();
+ char* triple = Dezr.ReadCStr(NULL,0,true);
+ std::vector<std::string> triples;
+ triples.push_back(triple);
+ delete [] triple;
+ Dezr.RegisterPtr(PtrID,CreateTargetInfo(triples,Diags));
+ }
+
// For Selectors, we must read the identifier table first because the
// SelectorTable depends on the identifiers being already deserialized.
- llvm::Deserializer::Location SelectorBlockLoc = Dezr.getCurrentBlockLocation();
+ llvm::Deserializer::Location SelectorBlockLoc =
+ Dezr.getCurrentBlockLocation();
+
Dezr.SkipBlock();
// Read the identifier table.
Modified: cfe/trunk/Driver/clang.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/clang.cpp?rev=44555&r1=44554&r2=44555&view=diff
==============================================================================
--- cfe/trunk/Driver/clang.cpp (original)
+++ cfe/trunk/Driver/clang.cpp Mon Dec 3 16:48:14 2007
@@ -899,7 +899,7 @@
break;
case TestSerialization:
- Consumer = CreateSerializationTest();
+ Consumer = CreateSerializationTest(PP.getDiagnostics());
break;
case EmitLLVM:
More information about the cfe-commits
mailing list