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;
}
//===----------------------------------------------------------------------===//
-// FunctionTypeProto
+// FunctionTypeNoProto
//===----------------------------------------------------------------------===//
void FunctionTypeProto::EmitImpl(Serializer& S) const {
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();
}
//===----------------------------------------------------------------------===//
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.