Spurious puzzling warning with --analyze

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Spurious puzzling warning with --analyze

Robert Purves
$ cat test.c

void bar( int x ) { }

void foo( int n )
{
        int x[4096], i;
       
        for ( i = 0;  i < (1 << n); i++ )
        {
                x[i] = i;
        }
       
        for ( i = 0;  i < (1 << n); i++ )
        {
                bar( x[i] );
        }
}

$ clang test.c --analyze
test.c:15:3: warning: Pass-by-value argument in function call is undefined
                bar( x[i] );
                ^    ~~~~
$ clang --version
clang version 2.8 (trunk 111903)

Robert P.

_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: Spurious puzzling warning with --analyze

Ted Kremenek
Hi Robert,

Please file a bugzilla report.  The problem is that '1 << n' is not getting accurately modeled, resulting in a false path that triggers the warning.

On Aug 24, 2010, at 1:49 AM, Robert Purves wrote:

> $ cat test.c
>
> void bar( int x ) { }
>
> void foo( int n )
> {
> int x[4096], i;
>
> for ( i = 0;  i < (1 << n); i++ )
> {
> x[i] = i;
> }
>
> for ( i = 0;  i < (1 << n); i++ )
> {
> bar( x[i] );
> }
> }
>
> $ clang test.c --analyze
> test.c:15:3: warning: Pass-by-value argument in function call is undefined
>                bar( x[i] );
>                ^    ~~~~
> $ clang --version
> clang version 2.8 (trunk 111903)
>
> Robert P.
>
> _______________________________________________
> cfe-dev mailing list
> [hidden email]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev


_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev