diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Parse/AttributeList.cpp | 21 | ||||
-rw-r--r-- | lib/Sema/SemaDeclAttr.cpp | 36 |
2 files changed, 25 insertions, 32 deletions
diff --git a/lib/Parse/AttributeList.cpp b/lib/Parse/AttributeList.cpp index d989d1de6e..1cc9a51ec6 100644 --- a/lib/Parse/AttributeList.cpp +++ b/lib/Parse/AttributeList.cpp @@ -106,12 +106,16 @@ AttributeList::Kind AttributeList::getKind(const IdentifierInfo *Name) { if (!memcmp(Str, "format_arg", 10)) return IgnoredAttribute; // FIXME: printf format string checking. if (!memcmp(Str, "gnu_inline", 10)) return AT_gnu_inline; + if (!memcmp(Str, "cf_retains", 10)) return AT_cf_retains; + if (!memcmp(Str, "ns_retains", 10)) return AT_ns_retains; break; case 11: if (!memcmp(Str, "weak_import", 11)) return AT_weak_import; if (!memcmp(Str, "vector_size", 11)) return AT_vector_size; if (!memcmp(Str, "constructor", 11)) return AT_constructor; if (!memcmp(Str, "unavailable", 11)) return AT_unavailable; + if (!memcmp(Str, "cf_releases", 11)) return AT_cf_releases; + if (!memcmp(Str, "ns_releases", 11)) return AT_ns_releases; break; case 12: if (!memcmp(Str, "overloadable", 12)) return AT_overloadable; @@ -126,6 +130,9 @@ AttributeList::Kind AttributeList::getKind(const IdentifierInfo *Name) { case 15: if (!memcmp(Str, "ext_vector_type", 15)) return AT_ext_vector_type; break; + case 16: + if (!memcmp(Str, "ns_returns_owned", 16)) return AT_ns_returns_owned; + break; case 17: if (!memcmp(Str, "transparent_union", 17)) return AT_transparent_union; if (!memcmp(Str, "analyzer_noreturn", 17)) return AT_analyzer_noreturn; @@ -133,20 +140,6 @@ AttributeList::Kind AttributeList::getKind(const IdentifierInfo *Name) { case 18: if (!memcmp(Str, "warn_unused_result", 18)) return AT_warn_unused_result; break; - case 19: - if (!memcmp(Str, "cf_ownership_retain", 19)) - return AT_cf_ownership_retain; - if (!memcmp(Str, "ns_ownership_retain", 19)) - return AT_ns_ownership_retain; - break; - case 20: - if (!memcmp(Str, "cf_ownership_release", 20)) - return AT_cf_ownership_release; - if (!memcmp(Str, "ns_ownership_release", 20)) - return AT_ns_ownership_release; - if (!memcmp(Str, "ns_returns_ownership", 20)) - return AT_ns_returns_ownership; - break; case 22: if (!memcmp(Str, "no_instrument_function", 22)) return AT_no_instrument_function; diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp index 29a0c6b977..033be2c962 100644 --- a/lib/Sema/SemaDeclAttr.cpp +++ b/lib/Sema/SemaDeclAttr.cpp @@ -1552,7 +1552,7 @@ static void HandleNSOwnershipReturnsAttr(Decl *d, const AttributeList &Attr, if (!isa<ObjCMethodDecl>(d) && !isa<FunctionDecl>(d)) { S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) << - "ns_returns_ownership" << 3 /* function or method */; + "ns_returns_owned" << 3 /* function or method */; return; } @@ -1569,14 +1569,14 @@ static void HandleNSOwnershipAttr(Decl *d, const AttributeList &Attr, default: assert(0 && "invalid ownership attribute"); return; - case AttributeList::AT_cf_ownership_release: - name = "cf_ownership_release"; break; - case AttributeList::AT_cf_ownership_retain: - name = "cf_ownership_retain"; break; - case AttributeList::AT_ns_ownership_release: - name = "ns_ownership_release"; break; - case AttributeList::AT_ns_ownership_retain: - name = "ns_ownership_retain"; break; + case AttributeList::AT_cf_releases: + name = "cf_releases"; break; + case AttributeList::AT_cf_retains: + name = "cf_retains"; break; + case AttributeList::AT_ns_releases: + name = "ns_releases"; break; + case AttributeList::AT_ns_retains: + name = "ns_retains"; break; }; S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) << name @@ -1589,13 +1589,13 @@ static void HandleNSOwnershipAttr(Decl *d, const AttributeList &Attr, default: assert(0 && "invalid ownership attribute"); return; - case AttributeList::AT_cf_ownership_release: + case AttributeList::AT_cf_releases: d->addAttr(::new (S.Context) CFOwnershipReleaseAttr()); return; - case AttributeList::AT_cf_ownership_retain: + case AttributeList::AT_cf_retains: d->addAttr(::new (S.Context) CFOwnershipRetainAttr()); return; - case AttributeList::AT_ns_ownership_release: + case AttributeList::AT_ns_releases: d->addAttr(::new (S.Context) NSOwnershipReleaseAttr()); return; - case AttributeList::AT_ns_ownership_retain: + case AttributeList::AT_ns_retains: d->addAttr(::new (S.Context) NSOwnershipRetainAttr()); return; } } @@ -1638,13 +1638,13 @@ static void ProcessDeclAttribute(Decl *D, const AttributeList &Attr, Sema &S) { case AttributeList::AT_nothrow: HandleNothrowAttr (D, Attr, S); break; // Checker-specific. - case AttributeList::AT_cf_ownership_release: - case AttributeList::AT_cf_ownership_retain: + case AttributeList::AT_cf_releases: + case AttributeList::AT_cf_retains: HandleNSOwnershipAttr(D, Attr, S); break; - case AttributeList::AT_ns_ownership_release: - case AttributeList::AT_ns_ownership_retain: + case AttributeList::AT_ns_releases: + case AttributeList::AT_ns_retains: HandleNSOwnershipAttr(D, Attr, S, true); break; - case AttributeList::AT_ns_returns_ownership: + case AttributeList::AT_ns_returns_owned: HandleNSOwnershipReturnsAttr(D, Attr, S); break; case AttributeList::AT_packed: HandlePackedAttr (D, Attr, S); break; |