]> granicus.if.org Git - clang/commitdiff
Mark functions referenced by 'cleanup' attribute as used. Fixes rdar://8728293
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Sat, 4 Dec 2010 01:12:11 +0000 (01:12 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Sat, 4 Dec 2010 01:12:11 +0000 (01:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120872 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclAttr.cpp
test/Sema/warn-unused-function.c

index ad0313d976c2c99841773b0cfa286ebbf0f5bb52..c429fd37dd54e045d631b9b317044e0b8a60579e 100644 (file)
@@ -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
index 24d4fade9b31334a32981421c529bab28fc0326d..5bbcf18a623d9d760165f40868b1b8c5ecc6dad2 100644 (file)
@@ -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;
+}