[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