cppcheck/test/synthetic/uninit.c

49 lines
870 B
C

// catch uninit variables..
#define AB1(A,B) A##B
#define AB2(A,B) AB1(A,B)
#define USE_INT_X(STMT) void AB2(use,__LINE__) (void) { int x; STMT; }
void dostuff(int);
// Bugs
USE_INT_X(dostuff(x))
USE_INT_X(dostuff(2+x))
USE_INT_X(x++)
USE_INT_X(x--)
USE_INT_X(++x)
USE_INT_X(--x)
USE_INT_X(x=x+1)
USE_INT_X(x=x-1)
USE_INT_X(x=x*1)
USE_INT_X(x=x/1)
USE_INT_X(x=x%1)
USE_INT_X(x=x&1)
USE_INT_X(x=x|1)
USE_INT_X(x=x^1)
USE_INT_X(x=x<<1)
USE_INT_X(x=x>>1)
USE_INT_X(x+=1)
USE_INT_X(x-=1)
USE_INT_X(x*=1)
USE_INT_X(x/=1)
USE_INT_X(x%=1)
USE_INT_X(x&=1)
USE_INT_X(x|=1)
USE_INT_X(x^=1)
USE_INT_X(x<<=1)
USE_INT_X(x>>=1)
USE_INT_X(1?x:1)
USE_INT_X(1&&x)
USE_INT_X(x=*(&x)+1)
USE_INT_X(int*p=&x; dostuff(*p))
// No bugs
USE_INT_X(x=0)
USE_INT_X(0?x:1)
USE_INT_X(0&&x)
USE_INT_X(int*p=&x; *p=0; dostuff(x))