• Stephan Bergmann's avatar
    More -Werror,-Wunused-private-field · ad9498f8
    Stephan Bergmann yazdı
    ...detected with a modified trunk Clang with
    
    > Index: lib/Sema/SemaDeclCXX.cpp
    > ===================================================================
    > --- lib/Sema/SemaDeclCXX.cpp	(revision 219190)
    > +++ lib/Sema/SemaDeclCXX.cpp	(working copy)
    > @@ -1917,9 +1917,10 @@
    >    const Type *T = FD.getType()->getBaseElementTypeUnsafe();
    >    // FIXME: Destruction of ObjC lifetime types has side-effects.
    >    if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl())
    > -    return !RD->isCompleteDefinition() ||
    > -           !RD->hasTrivialDefaultConstructor() ||
    > -           !RD->hasTrivialDestructor();
    > +    return !RD->hasAttr<WarnUnusedAttr>() &&
    > +           (!RD->isCompleteDefinition() ||
    > +            !RD->hasTrivialDefaultConstructor() ||
    > +            !RD->hasTrivialDestructor());
    >    return false;
    >  }
    >
    > @@ -3517,9 +3518,11 @@
    >    bool addFieldInitializer(CXXCtorInitializer *Init) {
    >      AllToInit.push_back(Init);
    >
    > +#if 0
    >      // Check whether this initializer makes the field "used".
    >      if (Init->getInit()->HasSideEffects(S.Context))
    >        S.UnusedPrivateFields.remove(Init->getAnyMember());
    > +#endif
    >
    >      return false;
    >    }
    
    to warn about members of SAL_WARN_UNUSED-annotated class types, and warn about
    initializations with side effects (cf.
    <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-October/039602.html>
    "-Wunused-private-field distracted by side effects").
    
    Change-Id: I3f3181c4eb8180ca28e1fa3dffc9dbe1002c6628
    ad9498f8
xmlnumfi.hxx 7.77 KB