From: Argyrios Kyrtzidis Date: Sat, 4 Dec 2010 01:12:11 +0000 (+0000) Subject: Mark functions referenced by 'cleanup' attribute as used. Fixes rdar://8728293 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ae3038c5e8bfce47337e83aeb253256633fbb701;p=clang Mark functions referenced by 'cleanup' attribute as used. Fixes rdar://8728293 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120872 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp index ad0313d976..c429fd37dd 100644 --- a/lib/Sema/SemaDeclAttr.cpp +++ b/lib/Sema/SemaDeclAttr.cpp @@ -1450,6 +1450,7 @@ static void HandleCleanupAttr(Decl *d, const AttributeList &Attr, Sema &S) { } d->addAttr(::new (S.Context) CleanupAttr(Attr.getLoc(), S.Context, FD)); + FD->setUsed(); } /// Handle __attribute__((format_arg((idx)))) attribute based on diff --git a/test/Sema/warn-unused-function.c b/test/Sema/warn-unused-function.c index 24d4fade9b..5bbcf18a62 100644 --- a/test/Sema/warn-unused-function.c +++ b/test/Sema/warn-unused-function.c @@ -47,3 +47,10 @@ static void f12(void); // PR7923 static void unused(void) { unused(); } // expected-warning{{unused}} + +// rdar://8728293 +static void cleanupMalloc(char * const * const allocation) { } +void f13(void) { + char * const __attribute__((cleanup(cleanupMalloc))) a; + (void)a; +}