On Dec 6, 2010, at 10:12 AM, John McCall wrote: > > On Dec 6, 2010, at 10:06 AM, Argyrios Kyrtzidis wrote: > >> On Dec 5, 2010, at 8:33 PM, John McCall wrote: >> >>> >>> On Dec 3, 2010, at 5:12 PM, Argyrios Kyrtzidis wrote: >>> >>>> Author: akirtzidis >>>> Date: Fri Dec 3 19:12:11 2010 >>>> New Revision: 120872 >>>> >>>> URL: http://llvm.org/viewvc/llvm-project?rev=120872&view=rev >>>> Log: >>>> Mark functions referenced by 'cleanup' attribute as used. Fixes >>>> rdar://8728293 >>> >>>> >>>> Modified: >>>> cfe/trunk/lib/Sema/SemaDeclAttr.cpp >>>> cfe/trunk/test/Sema/warn-unused-function.c >>>> >>>> Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=120872&r1=120871&r2=120872&view=diff >>>> ============================================================================== >>>> --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original) >>>> +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Fri Dec 3 19:12:11 2010 >>>> @@ -1450,6 +1450,7 @@ >>>> } >>>> >>>> d->addAttr(::new (S.Context) CleanupAttr(Attr.getLoc(), S.Context, FD)); >>>> + FD->setUsed(); >>>> } >>> >>> Technically, you can use __attribute__((cleanup)) inside a template. This >>> should use MarkDeclarationReferenced, and then there should be special >>> instantiation logic for the attribute. >> >> Hmm, is this really the right approach ? If it's referenced from a template >> which is not instantiated, it's not used from the codegen perspective but >> how about from the user's perspective: >> >> -We emit a warning that the function 'foo' is unused. >> -User removes function 'foo' >> -Now we emit an error that 'foo' is not found. > > Oh, you mean if a function is referenced from a template definition that's > never instantiated? Yeah, that's a valid user complaint. That's not > specific to attribute((cleanup)), though; any reference without dependent > ADL will have that issue.
For this specific case, the lookup is always non-dependent, I think the right user perspective is that the 'foo' is referenced if the attribute references it even in uninstantiated templates. > > John. _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
