PCH support for ExtQualType
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69230 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Frontend/PCHReader.cpp b/lib/Frontend/PCHReader.cpp
index e5656d6..0bd254f 100644
--- a/lib/Frontend/PCHReader.cpp
+++ b/lib/Frontend/PCHReader.cpp
@@ -1079,10 +1079,20 @@
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");