On Mon, Aug 6, 2012 at 6:47 PM, Richard Trieu <[email protected]> wrote:
> On Mon, Aug 6, 2012 at 4:09 PM, Richard Smith <[email protected]>wrote: > >> On Mon, Aug 6, 2012 at 3:29 PM, Richard Trieu <[email protected]> wrote: >> >>> Modify the self-reference visitor to mark pass-by-reference to function >>> calls as uninitialized use. This will warn on code such as: >>> >>> const string Foo = "prefix" + Foo + "suffix"; >>> >> >> Can we put this under a more specific -W flag? -Wuninitialized is >> intended to be essentially free of false positives. >> > Would this be more suited for a different uninitialized group or a new > flag altogether? > >> >> I'm a little concerned that this uninitialized-variables warning is >> deviating from the behavior of the CFG-based warning, which explicitly >> excludes variables passed by reference to functions from its list of uses, >> so if this is effective at finding bugs, perhaps we should add this check >> there too. >> > At least for classes, this seems to be a reasonable check. I'm not sure > if it would be useful for other cases. > >> >> --- lib/Sema/SemaDecl.cpp (revision 161345) >> +++ lib/Sema/SemaDecl.cpp (working copy) >> @@ -6223,7 +6223,7 @@ >> >> void VisitImplicitCastExpr(ImplicitCastExpr *E) { >> if ((!isRecordType && E->getCastKind() == CK_LValueToRValue) || >> - (isRecordType && E->getCastKind() == CK_NoOp)) >> + (E->getCastKind() == CK_NoOp)) >> >> Drop these parens... But I'm not really clear on what this is checking >> for. Presumably qualification conversions, but why are those a good place >> to look for self-initialization? >> > T -> const T conversion when passed by reference. Ping. Anyone else want to chime in on where to put this uninitialized check? One common case that this would catch is self-initialization by cast or dyn_cast. For instance: BinaryOperator *BO = dyn_cast<BinaryOperator>(BO); will not currently trigger any warnings due since BO is passed by reference to dyn_cast.
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
