[cfe-commits] [Patch] Add a warning for for loops with conditions that do not change
Richard Trieu
rtrieu at google.com
Mon Apr 16 17:08:10 PDT 2012
On Thu, Apr 5, 2012 at 10:25 AM, Douglas Gregor <dgregor at apple.com> wrote:
>
> On Mar 22, 2012, at 4:20 PM, Richard Trieu <rtrieu at google.com> wrote:
>
> > New patch for the for-loop warning.
> >
> > Changes:
> > Both visitors are now EvaluatedExprVisitor
> > The DeclExtractor, used on the conditional, works on a whitelist of
> Expr's instead of a blacklist.
> > Fixed edge cases in the DeclMatcher with respect to LValueToRValue
> conversions. Some casts aren't directly on DeclRefExprs.
> > Added variable names to the warning. Up to 4 variable names will be
> displayed.
> > <loop-analysis3.patch>
>
>
> + void VisitCastExpr(CastExpr *E) {
> + if (E->getCastKind() == CK_LValueToRValue)
> + EvalDecl = true;
> + Visit(E->getSubExpr());
> + }
>
> The use of EvalDecl here and here:
>
> + void VisitDeclRefExpr(DeclRefExpr *E) {
> + if (EvalDecl) return;
> +
> + if (VarDecl *VD = dyn_cast<VarDecl>(E->getDecl()))
> + if (Decls.count(VD)) {
> + FoundDecl = true;
> + return;
> + }
> + }
>
> feels a bit hacky. Why not look at the subexpression of an
> lvalue-to-rvalue cast, looking through any implicitly-generated nodes, and
> skip visitation if it is a DeclRefExpr?
>
I'll give it a shot and see what happens. There's also a few problems I
encountered in testing that I'd like to fix before committing.
>
> Otherwise, this patch seems fine. I'm curious to see how it works out in
> practice.
>
> - Doug
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120416/57c82790/attachment.html>
More information about the cfe-commits
mailing list