1 #include "check_debug.h" 2 3 void frob(void){} 4 5 int x[10]; 6 int offset; 7 void func(int *y) 8 { 9 if (({int test2 = !!(!y || !*y); frob(); frob(); frob(); test2;})) 10 __smatch_value("y"); 11 else 12 __smatch_value("y"); 13 14 if (({int test2 = !!(offset >= 10u || x[offset] == 1); frob(); frob(); frob(); test2;})) 15 __smatch_value("offset"); 16 else 17 __smatch_value("offset"); 18 19 } 20 /* 21 * check-name: smatch implied #10 22 * check-command: smatch -I.. -m64 sm_implied10.c 23 * 24 * check-output-start 25 sm_implied10.c:10 func() y = 0,4096-ptr_max 26 sm_implied10.c:12 func() y = 4096-ptr_max 27 sm_implied10.c:15 func() offset = s32min-s32max 28 sm_implied10.c:17 func() offset = 0-9 29 * check-output-end 30 */ 31