// S : tags sym c++ $TAGS // S : expect --result valid // 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.Os : -Os : : : valid // V : v.O0 : -O0 : : min : valid // V : v.O1 : -O1 : : : valid // V : v.O2 : -O2 : : : valid #include #include #include struct Widget{ int64_t i; }; struct Store{ Widget * w; }; void init( Widget * w ) { int v = __lamp_any_i32(); w->i = v % 10; } void init( Store * s, Widget * w ) { s->w = w; } bool check( Store * s ) { return s->w->i < 10; } int main() { Store store; Widget w; init( &w ); init( &store, &w ); assert( check( &store ) ); };