Don't warn about unused static functions if they are marked with 
attr constructor or destructor.  Patch by Jean-Daniel Dupas!

llvm-svn: 100870
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 9d0d7ad..7475ae4 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -3318,7 +3318,9 @@
   // FIXME: Also include static functions declared but not defined.
   if (!NewFD->isInvalidDecl() && IsFunctionDefinition 
       && !NewFD->isInlined() && NewFD->getLinkage() == InternalLinkage
-      && !NewFD->isUsed() && !NewFD->hasAttr<UnusedAttr>())
+      && !NewFD->isUsed() && !NewFD->hasAttr<UnusedAttr>()
+      && !NewFD->hasAttr<ConstructorAttr>()
+      && !NewFD->hasAttr<DestructorAttr>())
     UnusedStaticFuncs.push_back(NewFD);
   
   return NewFD;