diff options
| author | Ted Kremenek <kremenek@apple.com> | 2007-11-14 00:38:50 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2007-11-14 00:38:50 +0000 |
| commit | 164faf98f3a0cdab18053c23d245c65fe7a28b8a (patch) | |
| tree | 53e8f8f556315604e1553658cb58d97fb8061d14 | |
| parent | 7068cef079f6c8f17792e0818a771fd9da09d741 (diff) | |
| download | bcm5719-llvm-164faf98f3a0cdab18053c23d245c65fe7a28b8a.tar.gz bcm5719-llvm-164faf98f3a0cdab18053c23d245c65fe7a28b8a.zip | |
Implemented serialization of FunctionTypeNoProto.
llvm-svn: 44094
| -rw-r--r-- | clang/AST/TypeSerialization.cpp | 24 | ||||
| -rw-r--r-- | clang/include/clang/AST/Type.h | 5 |
2 files changed, 25 insertions, 4 deletions
diff --git a/clang/AST/TypeSerialization.cpp b/clang/AST/TypeSerialization.cpp index 24ff9f34a07..ba32abfb5dc 100644 --- a/clang/AST/TypeSerialization.cpp +++ b/clang/AST/TypeSerialization.cpp @@ -73,6 +73,10 @@ void Type::Create(ASTContext& Context, unsigned i, Deserializer& D) { case Type::ConstantArray: D.RegisterPtr(PtrID,ConstantArrayType::CreateImpl(Context,D)); + case Type::FunctionNoProto: + D.RegisterPtr(PtrID,FunctionTypeNoProto::CreateImpl(Context,D)); + break; + case Type::FunctionProto: D.RegisterPtr(PtrID,FunctionTypeProto::CreateImpl(Context,D)); break; @@ -130,7 +134,7 @@ Type* ConstantArrayType::CreateImpl(ASTContext& Context, Deserializer& D) { } //===----------------------------------------------------------------------===// -// FunctionTypeProto +// FunctionTypeNoProto //===----------------------------------------------------------------------===// void FunctionTypeProto::EmitImpl(Serializer& S) const { @@ -148,12 +152,24 @@ Type* FunctionTypeProto::CreateImpl(ASTContext& Context, Deserializer& D) { unsigned NumArgs = D.ReadInt(); llvm::SmallVector<QualType,15> Args; - + for (unsigned j = 0; j < NumArgs; ++j) Args.push_back(QualType::ReadVal(D)); - + return Context.getFunctionType(ResultType,&*Args.begin(), - NumArgs,isVariadic).getTypePtr(); + NumArgs,isVariadic).getTypePtr(); +} + +//===----------------------------------------------------------------------===// +// FunctionTypeProto +//===----------------------------------------------------------------------===// + +void FunctionTypeNoProto::EmitImpl(Serializer& S) const { + S.Emit(getResultType()); +} + +Type* FunctionTypeNoProto::CreateImpl(ASTContext& Context, Deserializer& D) { + return Context.getFunctionTypeNoProto(QualType::ReadVal(D)).getTypePtr(); } //===----------------------------------------------------------------------===// diff --git a/clang/include/clang/AST/Type.h b/clang/include/clang/AST/Type.h index 1209a70a050..fb3e38f123a 100644 --- a/clang/include/clang/AST/Type.h +++ b/clang/include/clang/AST/Type.h @@ -751,6 +751,11 @@ public: return T->getTypeClass() == FunctionNoProto; } static bool classof(const FunctionTypeNoProto *) { return true; } + +protected: + virtual void EmitImpl(llvm::Serializer& S) const; + static Type* CreateImpl(ASTContext& Context,llvm::Deserializer& D); + friend class Type; }; /// FunctionTypeProto - Represents a prototype with argument type info, e.g. |

