// S : tags error sym c++ $TAGS // S : expect --result error --location-comment ERROR // S : cc -o test.bc $CC_OPT $file // S : verify --symbolic $V_OPT test.bc // N : V : CC_OPT : V_OPT : TAGS : RESULT // V : v.O0 : -O0 : : error min : valid // V : v.Os : -Os : : : valid // V : v.O2 : -O2 : : : valid // V : v.O1 : -O1 : : : valid #include #include int nondet() { return __lamp_any_i32(); } int foo( int b ) { int x = nondet() % 42; int z = nondet() % 2 + 42; if ( b == 0 ) { return x; } return z; } int main() { int x = foo( 0 ); assert( x < 42 ); x = foo( 16 ); assert( x == 42 || x == 43 || x == 41 ); assert( x == 42 ); /* ERROR */ }