1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
int bar( int a, int b, int c )
{
if( (a<10) && (a>0) && (b>10) && (b<20) && (c<10) && (c>0) ) // a,b,c are non-negetive
{
//const int a1 = a, b1 = b, c1 = c ;
a = b + c ; // a == b1 + c1, will not overflow
int d = a + 6 ; // d == b1 + c1 + 6, will not overflow
++a ; // a == b1 + c1 + 1 // never used
--b ; // b == b1 - 1, will not underflow
++c ; // c == c1 + 1, will not overflow
d -= b ; // d = b1 + c1 + 6 - (b1-1) == c1 + 7, will not overflow
if( d < c ) // (c1+7) < (c1+1) == false
{
for( int i =0 ; i < 100 ; ++i ) d *= i%3 ; // dead code
d = 45678 ; // dead code
}
return d-c ; // d-c == c1+7 - (c1+1) == 6 // constant folding
}
else return 6 ;
// a, b, c, d are never used again
}
|