summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-04-15 22:00:08 +0000
committerDouglas Gregor <dgregor@apple.com>2009-04-15 22:00:08 +0000
commit455b8f41069ca322ede92f15f72ecaf4685f13f5 (patch)
treef0c22a7c749ffc47b74f4644642dd77f288b938e /clang/lib
parent3453f7d41097362a18670fde05a252702fdb2bf9 (diff)
downloadbcm5719-llvm-455b8f41069ca322ede92f15f72ecaf4685f13f5.tar.gz
bcm5719-llvm-455b8f41069ca322ede92f15f72ecaf4685f13f5.zip
PCH support for ExtQualType
llvm-svn: 69230
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Frontend/PCHReader.cpp18
1 files changed, 14 insertions, 4 deletions
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");
OpenPOWER on IntegriCloud