[cfe-dev] Static analyzer: check for ForStmt
Anna Zaks
ganna at apple.com
Tue Jun 25 10:14:40 PDT 2013
Siraj,
What you are seeing is expected - the analyzer processes entrance to the loop 4 times along the execution path.
What is the check you are trying to write? Is it path-sensitive in nature?
Cheers,
Anna.
On Jun 25, 2013, at 8:10 AM, "Siraj, Tareq A" <tareq.a.siraj at intel.com> wrote:
> Hello,
> I am new to the static analyzer codebase and wanted to try out some simple checkers on for loops. I noticed that PreStmt ignores control flow e.g. IfStmt and we should be using check::BranchCondition. I tried using check::BranchCondition on for loops and looks like it calls the checkBranchCondition function 4 times for 1 for loop. So,
> (1) Is this a bug?
> (2) Is check::BranchCondition the right checker to use here?
>
> Thanks.
>
> Sample for loop:
> =============
> for (int i = 0; i < 10; ++i)
>
> Calling dump() on the statement in checkBranchCondition() produces:
> ======================================================
> BinaryOperator 0x476f540 '_Bool' '<'
> |-ImplicitCastExpr 0x476f528 'int' <LValueToRValue>
> | `-DeclRefExpr 0x476f4e0 'int' lvalue Var 0x476f450 'i' 'int'
> `-IntegerLiteral 0x476f508 'int' 10
> BinaryOperator 0x476f540 '_Bool' '<'
> |-ImplicitCastExpr 0x476f528 'int' <LValueToRValue>
> | `-DeclRefExpr 0x476f4e0 'int' lvalue Var 0x476f450 'i' 'int'
> `-IntegerLiteral 0x476f508 'int' 10
> BinaryOperator 0x476f540 '_Bool' '<'
> |-ImplicitCastExpr 0x476f528 'int' <LValueToRValue>
> | `-DeclRefExpr 0x476f4e0 'int' lvalue Var 0x476f450 'i' 'int'
> `-IntegerLiteral 0x476f508 'int' 10
> BinaryOperator 0x476f540 '_Bool' '<'
> |-ImplicitCastExpr 0x476f528 'int' <LValueToRValue>
> | `-DeclRefExpr 0x476f4e0 'int' lvalue Var 0x476f450 'i' 'int'
> `-IntegerLiteral 0x476f508 'int' 10
>
>
> --
> Tareq A. Siraj
>
>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130625/59f26022/attachment.html>
More information about the cfe-dev
mailing list