aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-05-08 15:19:25 +0000
committerTed Kremenek <kremenek@apple.com>2009-05-08 15:19:25 +0000
commit008fc73ac971e5d30c8710e37e1f5f8a843052f1 (patch)
treea704d5d089dc50e149ada2e953b8fc0e489d07e4 /lib
parent2572eda55285cd61e7e8523d4404ed33f4d33d9b (diff)
Remove experimental ownership attributes from Clang.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71216 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Analysis/CFRefCount.cpp93
-rw-r--r--lib/Frontend/PCHReaderDecl.cpp7
-rw-r--r--lib/Frontend/PCHWriter.cpp7
-rw-r--r--lib/Parse/AttributeList.cpp9
-rw-r--r--lib/Sema/SemaDeclAttr.cpp101
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;