From 455b8f41069ca322ede92f15f72ecaf4685f13f5 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Wed, 15 Apr 2009 22:00:08 +0000 Subject: PCH support for ExtQualType llvm-svn: 69230 --- clang/lib/Frontend/PCHReader.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'clang/lib/Frontend/PCHReader.cpp') diff --git a/clang/lib/Frontend/PCHReader.cpp b/clang/lib/Frontend/PCHReader.cpp index e5656d63f93..0bd254f1ca8 100644 --- a/clang/lib/Frontend/PCHReader.cpp +++ b/clang/lib/Frontend/PCHReader.cpp @@ -1079,10 +1079,20 @@ QualType PCHReader::ReadTypeRecord(uint64_t Offset) { assert(false && "Should never jump to an attribute block"); return QualType(); - case pch::TYPE_EXT_QUAL: - // FIXME: Deserialize ExtQualType - assert(false && "Cannot deserialize qualified types yet"); - return QualType(); + case pch::TYPE_EXT_QUAL: { + assert(Record.size() == 3 && + "Incorrect encoding of extended qualifier type"); + QualType Base = GetType(Record[0]); + QualType::GCAttrTypes GCAttr = (QualType::GCAttrTypes)Record[1]; + unsigned AddressSpace = Record[2]; + + QualType T = Base; + if (GCAttr != QualType::GCNone) + T = Context.getObjCGCQualType(T, GCAttr); + if (AddressSpace) + T = Context.getAddrSpaceQualType(T, AddressSpace); + return T; + } case pch::TYPE_FIXED_WIDTH_INT: { assert(Record.size() == 2 && "Incorrect encoding of fixed-width int type"); -- cgit v1.2.3