[cfe-dev] : Analyzer ignoring the effects of a function call?

Arjun Singri arjunsingri at gmail.com
Sun Oct 2 16:59:31 PDT 2011


Hi,

I think I am getting a false positive for IdempotentOperationChecker which
is affecting another checker I am writing. Here is the program I am running
the clang analyzer on:

#include<stdio.h>

  int main(void)
  {
      int a = 5;
      int b = 4;
      int c = 10;

    *  scanf("%d", &a);*
*
*
      if (a + b == 4) {
          c = a + b;
      }
      return c;
  }

I get:

$clang --analyze d.cpp



*d.cpp:12:15: warning: The left operand to '+' is always 0*
*        c = a + b;*
                        ~  ^
Why is it ignoring the scanf function call? Is this expected because the
analyzer doesn't do inter-procedural analysis? But even then I think it
shouldn't ignore the effects of the function call. Now this is happening
because the LHSVal.isConstant(0) call inside the IdempotentOperationChecker
is evaluating to true.

Arjun
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20111002/eecdba5a/attachment.html>


More information about the cfe-dev mailing list