diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Analysis/CFRefCount.cpp | 93 | ||||
-rw-r--r-- | lib/Frontend/PCHReaderDecl.cpp | 7 | ||||
-rw-r--r-- | lib/Frontend/PCHWriter.cpp | 7 | ||||
-rw-r--r-- | lib/Parse/AttributeList.cpp | 9 | ||||
-rw-r--r-- | lib/Sema/SemaDeclAttr.cpp | 101 |
5 files changed, 0 insertions, 217 deletions
diff --git a/lib/Analysis/CFRefCount.cpp b/lib/Analysis/CFRefCount.cpp index 686ef2c263..90b15a40b4 100644 --- a/lib/Analysis/CFRefCount.cpp +++ b/lib/Analysis/CFRefCount.cpp @@ -785,15 +785,6 @@ public: RetainSummary* getCommonMethodSummary(const ObjCMethodDecl* MD, Selector S, QualType RetTy); - void updateSummaryArgEffFromAnnotations(RetainSummary &Summ, const Decl *D, - unsigned argIdx = 0); - - void updateSummaryFromAnnotations(RetainSummary &Summ, - const ObjCMethodDecl *MD); - - void updateSummaryFromAnnotations(RetainSummary &Summ, - const FunctionDecl *FD); - bool isGCEnabled() const { return GCEnabled; } RetainSummary *copySummary(RetainSummary *OldSumm) { @@ -1018,10 +1009,6 @@ RetainSummary* RetainSummaryManager::getSummary(FunctionDecl* FD) { if (!S) S = getDefaultSummary(); - // Annotations override defaults. - assert(S); - updateSummaryFromAnnotations(*S, FD); - FuncSummaries[FD] = S; return S; } @@ -1105,81 +1092,7 @@ RetainSummaryManager::getInitMethodSummary(QualType RetTy) { ? RetEffect::MakeReceiverAlias() : RetEffect::MakeNoRet()); } - -void -RetainSummaryManager::updateSummaryArgEffFromAnnotations(RetainSummary &Summ, - const Decl *D, - unsigned i) { - ArgEffect E = DoNothing; - - if (D->getAttr<NSOwnershipRetainAttr>()) - E = IncRefMsg; - else if (D->getAttr<CFOwnershipRetainAttr>()) - E = IncRef; - else if (D->getAttr<NSOwnershipReleaseAttr>()) - E = DecRefMsg; - else if (D->getAttr<CFOwnershipReleaseAttr>()) - E = DecRef; - else if (D->getAttr<NSOwnershipAutoreleaseAttr>()) - E = Autorelease; - else - return; - if (isa<ParmVarDecl>(D)) - Summ.setArgEffect(AF, i, E); - else - Summ.setReceiverEffect(E); -} - -void -RetainSummaryManager::updateSummaryFromAnnotations(RetainSummary &Summ, - const FunctionDecl *FD) { - if (!FD) - return; - - // Determine if there is a special return effect for this method. - if (isTrackedObjCObjectType(FD->getResultType())) { - if (FD->getAttr<NSOwnershipReturnsAttr>()) { - Summ.setRetEffect(ObjCAllocRetE); - } - else if (FD->getAttr<CFOwnershipReturnsAttr>()) { - Summ.setRetEffect(RetEffect::MakeOwned(RetEffect::CF, true)); - } - } - - // Determine if there are any arguments with a specific ArgEffect. - unsigned i = 0; - for (FunctionDecl::param_const_iterator I = FD->param_begin(), - E = FD->param_end(); I != E; ++I, ++i) - updateSummaryArgEffFromAnnotations(Summ, *I, i); -} - -void -RetainSummaryManager::updateSummaryFromAnnotations(RetainSummary &Summ, - const ObjCMethodDecl *MD) { - if (!MD) - return; - - // Determine if there is a special return effect for this method. - if (isTrackedObjCObjectType(MD->getResultType())) { - if (MD->getAttr<NSOwnershipReturnsAttr>()) { - Summ.setRetEffect(ObjCAllocRetE); - } - else if (MD->getAttr<CFOwnershipReturnsAttr>()) { - Summ.setRetEffect(RetEffect::MakeOwned(RetEffect::CF, true)); - } - } - - // Determine if there are any arguments with a specific ArgEffect. - unsigned i = 0; - for (ObjCMethodDecl::param_iterator I = MD->param_begin(), - E = MD->param_end(); I != E; ++I, ++i) - updateSummaryArgEffFromAnnotations(Summ, *I, i); - - // Determine any effects on the receiver. - updateSummaryArgEffFromAnnotations(Summ, MD); -} - RetainSummary* RetainSummaryManager::getCommonMethodSummary(const ObjCMethodDecl* MD, Selector S, QualType RetTy) { @@ -1262,9 +1175,6 @@ RetainSummaryManager::getInstanceMethodSummary(Selector S, else Summ = getCommonMethodSummary(MD, S, RetTy); - // Annotations override defaults. - updateSummaryFromAnnotations(*Summ, MD); - // Memoize the summary. ObjCMethodSummaries[ObjCSummaryKey(ClsName, S)] = Summ; return Summ; @@ -1285,9 +1195,6 @@ RetainSummaryManager::getClassMethodSummary(Selector S, IdentifierInfo *ClsName, RetainSummary *Summ = getCommonMethodSummary(MD, S, RetTy); - // Annotations override defaults. - updateSummaryFromAnnotations(*Summ, MD); - // Memoize the summary. ObjCClassMethodSummaries[ObjCSummaryKey(ClsName, S)] = Summ; return Summ; diff --git a/lib/Frontend/PCHReaderDecl.cpp b/lib/Frontend/PCHReaderDecl.cpp index 059aa259c7..d47a008f1f 100644 --- a/lib/Frontend/PCHReaderDecl.cpp +++ b/lib/Frontend/PCHReaderDecl.cpp @@ -475,13 +475,6 @@ Attr *PCHReader::ReadAttributes() { SIMPLE_ATTR(ObjCException); SIMPLE_ATTR(ObjCNSObject); - SIMPLE_ATTR(CFOwnershipRelease); - SIMPLE_ATTR(CFOwnershipRetain); - SIMPLE_ATTR(CFOwnershipReturns); - SIMPLE_ATTR(NSOwnershipAutorelease); - SIMPLE_ATTR(NSOwnershipRelease); - SIMPLE_ATTR(NSOwnershipRetain); - SIMPLE_ATTR(NSOwnershipReturns); SIMPLE_ATTR(Overloadable); UNSIGNED_ATTR(Packed); SIMPLE_ATTR(Pure); diff --git a/lib/Frontend/PCHWriter.cpp b/lib/Frontend/PCHWriter.cpp index dacb2cdfd3..688cedc524 100644 --- a/lib/Frontend/PCHWriter.cpp +++ b/lib/Frontend/PCHWriter.cpp @@ -1544,13 +1544,6 @@ void PCHWriter::WriteAttributeRecord(const Attr *Attr) { case Attr::ObjCException: case Attr::ObjCNSObject: - case Attr::CFOwnershipRelease: - case Attr::CFOwnershipRetain: - case Attr::CFOwnershipReturns: - case Attr::NSOwnershipAutorelease: - case Attr::NSOwnershipRelease: - case Attr::NSOwnershipRetain: - case Attr::NSOwnershipReturns: case Attr::Overloadable: break; diff --git a/lib/Parse/AttributeList.cpp b/lib/Parse/AttributeList.cpp index 8e3e63ada4..c5ec9618d9 100644 --- a/lib/Parse/AttributeList.cpp +++ b/lib/Parse/AttributeList.cpp @@ -106,16 +106,12 @@ 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; @@ -129,7 +125,6 @@ AttributeList::Kind AttributeList::getKind(const IdentifierInfo *Name) { break; case 15: if (!memcmp(Str, "ext_vector_type", 15)) return AT_ext_vector_type; - if (!memcmp(Str, "ns_autoreleases", 15)) return AT_ns_autoreleases; break; case 17: if (!memcmp(Str, "transparent_union", 17)) return AT_transparent_union; @@ -138,10 +133,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, "ns_returns_retained", 19)) return AT_ns_returns_retained; - if (!memcmp(Str, "cf_returns_retained", 19)) return AT_cf_returns_retained; - 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 898dae9a20..a5365fc654 100644 --- a/lib/Sema/SemaDeclAttr.cpp +++ b/lib/Sema/SemaDeclAttr.cpp @@ -1544,94 +1544,6 @@ static void HandleRegparmAttr(Decl *d, const AttributeList &Attr, Sema &S) { } //===----------------------------------------------------------------------===// -// Checker-specific attribute handlers. -//===----------------------------------------------------------------------===// - -static void HandleNSOwnershipReturnsAttr(Decl *d, const AttributeList &Attr, - Sema &S) { - - if (!isa<ObjCMethodDecl>(d) && !isa<FunctionDecl>(d)) { - const char *name; - - switch (Attr.getKind()) { - default: - assert(0 && "invalid ownership attribute"); - return; - case AttributeList::AT_cf_returns_retained: - name = "cf_returns_retained"; break; - case AttributeList::AT_ns_returns_retained: - name = "ns_returns_retained"; break; - }; - - S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) << - name << 3 /* function or method */; - return; - } - - switch (Attr.getKind()) { - default: - assert(0 && "invalid ownership attribute"); - return; - case AttributeList::AT_cf_returns_retained: - d->addAttr(::new (S.Context) CFOwnershipReturnsAttr()); - return; - case AttributeList::AT_ns_returns_retained: - d->addAttr(::new (S.Context) NSOwnershipReturnsAttr()); - return; - }; -} - -static void HandleNSOwnershipAttr(Decl *d, const AttributeList &Attr, - Sema &S, bool attachToMethodDecl = false) { - - if (!isa<ParmVarDecl>(d) && (!attachToMethodDecl || !isa<ObjCMethodDecl>(d))){ - const char *name; - - switch (Attr.getKind()) { - default: - assert(0 && "invalid ownership attribute"); - return; - case AttributeList::AT_cf_releases: - name = "cf_releases"; break; - case AttributeList::AT_cf_retains: - name = "cf_retains"; break; - case AttributeList::AT_ns_autoreleases: - name = "ns_autoreleases"; 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 << (attachToMethodDecl ? 5 /* parameter or method decl */ - : 4 /* parameter */); - return; - } - - switch (Attr.getKind()) { - default: - assert(0 && "invalid ownership attribute"); - return; - case AttributeList::AT_cf_releases: - d->addAttr(::new (S.Context) CFOwnershipReleaseAttr()); - return; - case AttributeList::AT_cf_retains: - d->addAttr(::new (S.Context) CFOwnershipRetainAttr()); - return; - case AttributeList::AT_ns_autoreleases: - d->addAttr(::new (S.Context) NSOwnershipAutoreleaseAttr()); - return; - case AttributeList::AT_ns_releases: - d->addAttr(::new (S.Context) NSOwnershipReleaseAttr()); - return; - case AttributeList::AT_ns_retains: - d->addAttr(::new (S.Context) NSOwnershipRetainAttr()); - return; - } -} - -//===----------------------------------------------------------------------===// // Top Level Sema Entry Points //===----------------------------------------------------------------------===// @@ -1667,19 +1579,6 @@ static void ProcessDeclAttribute(Decl *D, const AttributeList &Attr, Sema &S) { case AttributeList::AT_nonnull: HandleNonNullAttr (D, Attr, S); break; case AttributeList::AT_noreturn: HandleNoReturnAttr (D, Attr, S); break; case AttributeList::AT_nothrow: HandleNothrowAttr (D, Attr, S); break; - - // Checker-specific. - case AttributeList::AT_cf_releases: - case AttributeList::AT_cf_retains: - HandleNSOwnershipAttr(D, Attr, S); break; - case AttributeList::AT_ns_autoreleases: - case AttributeList::AT_ns_releases: - case AttributeList::AT_ns_retains: - HandleNSOwnershipAttr(D, Attr, S, true); break; - case AttributeList::AT_ns_returns_retained: - case AttributeList::AT_cf_returns_retained: - HandleNSOwnershipReturnsAttr(D, Attr, S); break; - case AttributeList::AT_packed: HandlePackedAttr (D, Attr, S); break; case AttributeList::AT_section: HandleSectionAttr (D, Attr, S); break; case AttributeList::AT_stdcall: HandleStdCallAttr (D, Attr, S); break; |