diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2018-08-13 22:07:09 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2018-08-13 22:07:09 +0000 |
commit | f79178635abeec3bf958a08eb760d6db911ee3c1 (patch) | |
tree | c9cf488faba0e90cec9623aefe73c907dff70aad /clang/lib/ARCMigrate | |
parent | cade635c77004ddfabe97a0bbefefcf90d322ed8 (diff) | |
download | bcm5719-llvm-f79178635abeec3bf958a08eb760d6db911ee3c1.tar.gz bcm5719-llvm-f79178635abeec3bf958a08eb760d6db911ee3c1.zip |
Model type attributes as regular Attrs.
Specifically, AttributedType now tracks a regular attr::Kind rather than
having its own parallel Kind enumeration, and AttributedTypeLoc now
holds an Attr* instead of holding an ad-hoc collection of Attr fields.
Differential Revision: https://reviews.llvm.org/D50526
llvm-svn: 339623
Diffstat (limited to 'clang/lib/ARCMigrate')
-rw-r--r-- | clang/lib/ARCMigrate/TransGCAttrs.cpp | 15 | ||||
-rw-r--r-- | clang/lib/ARCMigrate/Transforms.cpp | 2 |
2 files changed, 6 insertions, 11 deletions
diff --git a/clang/lib/ARCMigrate/TransGCAttrs.cpp b/clang/lib/ARCMigrate/TransGCAttrs.cpp index fb45cd92c1f..06f8a23e7ee 100644 --- a/clang/lib/ARCMigrate/TransGCAttrs.cpp +++ b/clang/lib/ARCMigrate/TransGCAttrs.cpp @@ -81,10 +81,11 @@ public: } bool handleAttr(AttributedTypeLoc TL, Decl *D = nullptr) { - if (TL.getAttrKind() != AttributedType::attr_objc_ownership) + auto *OwnershipAttr = TL.getAttrAs<ObjCOwnershipAttr>(); + if (!OwnershipAttr) return false; - SourceLocation Loc = TL.getAttrNameLoc(); + SourceLocation Loc = OwnershipAttr->getLocation(); unsigned RawLoc = Loc.getRawEncoding(); if (MigrateCtx.AttrSet.count(RawLoc)) return true; @@ -93,13 +94,7 @@ public: SourceManager &SM = Ctx.getSourceManager(); if (Loc.isMacroID()) Loc = SM.getImmediateExpansionRange(Loc).getBegin(); - SmallString<32> Buf; - bool Invalid = false; - StringRef Spell = Lexer::getSpelling( - SM.getSpellingLoc(TL.getAttrEnumOperandLoc()), - Buf, SM, Ctx.getLangOpts(), &Invalid); - if (Invalid) - return false; + StringRef Spell = OwnershipAttr->getKind()->getName(); MigrationContext::GCAttrOccurrence::AttrKind Kind; if (Spell == "strong") Kind = MigrationContext::GCAttrOccurrence::Strong; @@ -284,7 +279,7 @@ static void checkAllAtProps(MigrationContext &MigrateCtx, } for (unsigned i = 0, e = ATLs.size(); i != e; ++i) { - SourceLocation Loc = ATLs[i].first.getAttrNameLoc(); + SourceLocation Loc = ATLs[i].first.getAttr()->getLocation(); if (Loc.isMacroID()) Loc = MigrateCtx.Pass.Ctx.getSourceManager() .getImmediateExpansionRange(Loc) diff --git a/clang/lib/ARCMigrate/Transforms.cpp b/clang/lib/ARCMigrate/Transforms.cpp index 4a7af285887..a403744de70 100644 --- a/clang/lib/ARCMigrate/Transforms.cpp +++ b/clang/lib/ARCMigrate/Transforms.cpp @@ -359,7 +359,7 @@ MigrationContext::~MigrationContext() { bool MigrationContext::isGCOwnedNonObjC(QualType T) { while (!T.isNull()) { if (const AttributedType *AttrT = T->getAs<AttributedType>()) { - if (AttrT->getAttrKind() == AttributedType::attr_objc_ownership) + if (AttrT->getAttrKind() == attr::ObjCOwnership) return !AttrT->getModifiedType()->isObjCRetainableType(); } |