On Wed, Oct 24, 2012 at 11:29 PM, David Blaikie <[email protected]> wrote:
> Author: dblaikie > Date: Wed Oct 24 16:29:06 2012 > New Revision: 166625 > > URL: http://llvm.org/viewvc/llvm-project?rev=166625&view=rev > Log: > Fix false positive in -Wunused-variable when a ctor call make involve > cleanups. > > Modified: > cfe/trunk/lib/Sema/SemaDecl.cpp > cfe/trunk/test/SemaCXX/warn-unused-variables.cpp > > Modified: cfe/trunk/lib/Sema/SemaDecl.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=166625&r1=166624&r2=166625&view=diff > > ============================================================================== > --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDecl.cpp Wed Oct 24 16:29:06 2012 > @@ -1286,6 +1286,8 @@ > return false; > > if (const Expr *Init = VD->getInit()) { > + if (const ExprWithCleanups *Cleanups = > dyn_cast<ExprWithCleanups>(Init)) > + Init = Cleanups->getSubExpr(); > const CXXConstructExpr *Construct = > dyn_cast<CXXConstructExpr>(Init); > if (Construct && !Construct->isElidable()) { > > Modified: cfe/trunk/test/SemaCXX/warn-unused-variables.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/warn-unused-variables.cpp?rev=166625&r1=166624&r2=166625&view=diff > > ============================================================================== > --- cfe/trunk/test/SemaCXX/warn-unused-variables.cpp (original) > +++ cfe/trunk/test/SemaCXX/warn-unused-variables.cpp Wed Oct 24 16:29:06 > 2012 > @@ -123,3 +123,15 @@ > S3 z = a; // expected-warning {{unused variable 'z'}} > } > } > + > +namespace ctor_with_cleanups { > + struct S1 { > + ~S1(); > + }; > + struct S2 { > + S2(const S1&); > + }; > + void func() { > + S2 s((S1())); > + } > +} > > So, here S1() will generate a cleanup... however "s" is still unused and of little interest because if I were to write "S1();" there would be cleanup and no "s", isn't it ? I don't see the point in introducing a named variable when the effect of not introducing it would be identical. -- Matthieu
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
