forked from OSchip/llvm-project
Add 'ns_returns_not_retained' and 'cf_returns_not_retained' attributes to
match 'ns_returns_retained' and 'cf_returns_retained' respectively. These are not yet hooked up to the static analyzer. llvm-svn: 96535
This commit is contained in:
parent
e164b5c2e7
commit
d9c6663124
|
@ -73,8 +73,10 @@ public:
|
|||
ObjCException,
|
||||
ObjCNSObject,
|
||||
Override,
|
||||
CFReturnsRetained, // Clang/Checker-specific.
|
||||
NSReturnsRetained, // Clang/Checker-specific.
|
||||
CFReturnsRetained, // Clang/Checker-specific.
|
||||
CFReturnsNotRetained, // Clang/Checker-specific.
|
||||
NSReturnsRetained, // Clang/Checker-specific.
|
||||
NSReturnsNotRetained, // Clang/Checker-specific.
|
||||
Overloadable, // Clang-specific
|
||||
Packed,
|
||||
PragmaPack,
|
||||
|
@ -545,7 +547,9 @@ public:
|
|||
};
|
||||
|
||||
// Checker-specific attributes.
|
||||
DEF_SIMPLE_ATTR(CFReturnsNotRetained);
|
||||
DEF_SIMPLE_ATTR(CFReturnsRetained);
|
||||
DEF_SIMPLE_ATTR(NSReturnsNotRetained);
|
||||
DEF_SIMPLE_ATTR(NSReturnsRetained);
|
||||
|
||||
// C++0x member checking attributes.
|
||||
|
|
|
@ -89,8 +89,10 @@ public:
|
|||
AT_nsobject,
|
||||
AT_objc_exception,
|
||||
AT_override,
|
||||
AT_cf_returns_retained, // Clang-specific.
|
||||
AT_ns_returns_retained, // Clang-specific.
|
||||
AT_cf_returns_not_retained, // Clang-specific.
|
||||
AT_cf_returns_retained, // Clang-specific.
|
||||
AT_ns_returns_not_retained, // Clang-specific.
|
||||
AT_ns_returns_retained, // Clang-specific.
|
||||
AT_objc_gc,
|
||||
AT_overloadable, // Clang-specific.
|
||||
AT_packed,
|
||||
|
|
|
@ -74,37 +74,39 @@ void NonNullAttr::Destroy(ASTContext &C) {
|
|||
// FIXME: Can we use variadic macro to define DEF_SIMPLE_ATTR_CLONE for
|
||||
// "non-simple" classes?
|
||||
|
||||
DEF_SIMPLE_ATTR_CLONE(Packed)
|
||||
DEF_SIMPLE_ATTR_CLONE(AlwaysInline)
|
||||
DEF_SIMPLE_ATTR_CLONE(Malloc)
|
||||
DEF_SIMPLE_ATTR_CLONE(NoReturn)
|
||||
DEF_SIMPLE_ATTR_CLONE(AnalyzerNoReturn)
|
||||
DEF_SIMPLE_ATTR_CLONE(BaseCheck)
|
||||
DEF_SIMPLE_ATTR_CLONE(CDecl)
|
||||
DEF_SIMPLE_ATTR_CLONE(CFReturnsNotRetained)
|
||||
DEF_SIMPLE_ATTR_CLONE(CFReturnsRetained)
|
||||
DEF_SIMPLE_ATTR_CLONE(Const)
|
||||
DEF_SIMPLE_ATTR_CLONE(DLLExport)
|
||||
DEF_SIMPLE_ATTR_CLONE(DLLImport)
|
||||
DEF_SIMPLE_ATTR_CLONE(Deprecated)
|
||||
DEF_SIMPLE_ATTR_CLONE(FastCall)
|
||||
DEF_SIMPLE_ATTR_CLONE(Final)
|
||||
DEF_SIMPLE_ATTR_CLONE(Hiding)
|
||||
DEF_SIMPLE_ATTR_CLONE(Malloc)
|
||||
DEF_SIMPLE_ATTR_CLONE(NSReturnsNotRetained)
|
||||
DEF_SIMPLE_ATTR_CLONE(NSReturnsRetained)
|
||||
DEF_SIMPLE_ATTR_CLONE(NoDebug)
|
||||
DEF_SIMPLE_ATTR_CLONE(NoInline)
|
||||
DEF_SIMPLE_ATTR_CLONE(NoReturn)
|
||||
DEF_SIMPLE_ATTR_CLONE(NoThrow)
|
||||
DEF_SIMPLE_ATTR_CLONE(ObjCException)
|
||||
DEF_SIMPLE_ATTR_CLONE(ObjCNSObject)
|
||||
DEF_SIMPLE_ATTR_CLONE(Override)
|
||||
DEF_SIMPLE_ATTR_CLONE(Packed)
|
||||
DEF_SIMPLE_ATTR_CLONE(Pure)
|
||||
DEF_SIMPLE_ATTR_CLONE(StdCall)
|
||||
DEF_SIMPLE_ATTR_CLONE(TransparentUnion)
|
||||
DEF_SIMPLE_ATTR_CLONE(Unavailable)
|
||||
DEF_SIMPLE_ATTR_CLONE(Unused)
|
||||
DEF_SIMPLE_ATTR_CLONE(Used)
|
||||
DEF_SIMPLE_ATTR_CLONE(WarnUnusedResult)
|
||||
DEF_SIMPLE_ATTR_CLONE(Weak)
|
||||
DEF_SIMPLE_ATTR_CLONE(WeakImport)
|
||||
DEF_SIMPLE_ATTR_CLONE(NoThrow)
|
||||
DEF_SIMPLE_ATTR_CLONE(Const)
|
||||
DEF_SIMPLE_ATTR_CLONE(Pure)
|
||||
DEF_SIMPLE_ATTR_CLONE(FastCall)
|
||||
DEF_SIMPLE_ATTR_CLONE(StdCall)
|
||||
DEF_SIMPLE_ATTR_CLONE(CDecl)
|
||||
DEF_SIMPLE_ATTR_CLONE(TransparentUnion)
|
||||
DEF_SIMPLE_ATTR_CLONE(ObjCNSObject)
|
||||
DEF_SIMPLE_ATTR_CLONE(ObjCException)
|
||||
DEF_SIMPLE_ATTR_CLONE(NoDebug)
|
||||
DEF_SIMPLE_ATTR_CLONE(WarnUnusedResult)
|
||||
DEF_SIMPLE_ATTR_CLONE(NoInline)
|
||||
DEF_SIMPLE_ATTR_CLONE(CFReturnsRetained)
|
||||
DEF_SIMPLE_ATTR_CLONE(NSReturnsRetained)
|
||||
DEF_SIMPLE_ATTR_CLONE(BaseCheck)
|
||||
DEF_SIMPLE_ATTR_CLONE(Hiding)
|
||||
DEF_SIMPLE_ATTR_CLONE(Override)
|
||||
DEF_SIMPLE_ATTR_CLONE(DLLImport)
|
||||
DEF_SIMPLE_ATTR_CLONE(DLLExport)
|
||||
DEF_SIMPLE_ATTR_CLONE(X86ForceAlignArgPointer)
|
||||
|
||||
Attr* PragmaPackAttr::clone(ASTContext &C) const {
|
||||
|
|
|
@ -550,7 +550,9 @@ Attr *PCHReader::ReadAttributes() {
|
|||
|
||||
SIMPLE_ATTR(ObjCException);
|
||||
SIMPLE_ATTR(ObjCNSObject);
|
||||
SIMPLE_ATTR(CFReturnsNotRetained);
|
||||
SIMPLE_ATTR(CFReturnsRetained);
|
||||
SIMPLE_ATTR(NSReturnsNotRetained);
|
||||
SIMPLE_ATTR(NSReturnsRetained);
|
||||
SIMPLE_ATTR(Overloadable);
|
||||
SIMPLE_ATTR(Override);
|
||||
|
|
|
@ -1868,10 +1868,12 @@ void PCHWriter::WriteAttributeRecord(const Attr *Attr) {
|
|||
break;
|
||||
}
|
||||
|
||||
case Attr::CFReturnsNotRetained:
|
||||
case Attr::CFReturnsRetained:
|
||||
case Attr::NSReturnsNotRetained:
|
||||
case Attr::NSReturnsRetained:
|
||||
case Attr::ObjCException:
|
||||
case Attr::ObjCNSObject:
|
||||
case Attr::CFReturnsRetained:
|
||||
case Attr::NSReturnsRetained:
|
||||
case Attr::Overloadable:
|
||||
case Attr::Override:
|
||||
break;
|
||||
|
|
|
@ -112,7 +112,9 @@ AttributeList::Kind AttributeList::getKind(const IdentifierInfo *Name) {
|
|||
.Case("analyzer_noreturn", AT_analyzer_noreturn)
|
||||
.Case("warn_unused_result", AT_warn_unused_result)
|
||||
.Case("carries_dependency", AT_carries_dependency)
|
||||
.Case("ns_returns_not_retained", AT_ns_returns_not_retained)
|
||||
.Case("ns_returns_retained", AT_ns_returns_retained)
|
||||
.Case("cf_returns_not_retained", AT_cf_returns_not_retained)
|
||||
.Case("cf_returns_retained", AT_cf_returns_retained)
|
||||
.Case("reqd_work_group_size", AT_reqd_wg_size)
|
||||
.Case("no_instrument_function", AT_no_instrument_function)
|
||||
|
|
|
@ -1711,6 +1711,12 @@ static void HandleNSReturnsRetainedAttr(Decl *d, const AttributeList &Attr,
|
|||
default:
|
||||
assert(0 && "invalid ownership attribute");
|
||||
return;
|
||||
case AttributeList::AT_cf_returns_not_retained:
|
||||
d->addAttr(::new (S.Context) CFReturnsNotRetainedAttr());
|
||||
return;
|
||||
case AttributeList::AT_ns_returns_not_retained:
|
||||
d->addAttr(::new (S.Context) NSReturnsNotRetainedAttr());
|
||||
return;
|
||||
case AttributeList::AT_cf_returns_retained:
|
||||
d->addAttr(::new (S.Context) CFReturnsRetainedAttr());
|
||||
return;
|
||||
|
@ -1776,6 +1782,8 @@ static void ProcessDeclAttribute(Scope *scope, Decl *D,
|
|||
case AttributeList::AT_override: HandleOverrideAttr (D, Attr, S); break;
|
||||
|
||||
// Checker-specific.
|
||||
case AttributeList::AT_ns_returns_not_retained:
|
||||
case AttributeList::AT_cf_returns_not_retained:
|
||||
case AttributeList::AT_ns_returns_retained:
|
||||
case AttributeList::AT_cf_returns_retained:
|
||||
HandleNSReturnsRetainedAttr(D, Attr, S); break;
|
||||
|
|
Loading…
Reference in New Issue