1 #include <stdio.h> 2 #include "check_debug.h" 3 4 struct foo { 5 int a, b, c; 6 int (*func)(int *p); 7 void (*func2)(int a); 8 void *data; 9 }; 10 11 static int frob1(int *val) 12 { 13 __smatch_implied(*val); 14 return *val + 1; 15 } 16 17 static int frob2(int *val) 18 { 19 __smatch_implied(*val); 20 return *val + 1; 21 } 22 23 static struct foo one_struct = { 24 .a = 1, 25 .func = frob1, 26 }; 27 28 static struct foo two_struct = { 29 .a = 2, 30 .func = frob2, 31 }; 32 33 struct foo *unknown(void); 34 struct foo *p; 35 36 int main(void) 37 { 38 int ret; 39 40 p = unknown(); 41 ret = p->func(&p->a); 42 43 return 0; 44 } 45 46 /* 47 * check-name: smatch mtag #2 48 * check-command: validation/smatch_db_test.sh -I.. sm_mtag2.c 49 * 50 * check-output-start 51 sm_mtag2.c:13 frob1() implied: *val = '1' 52 sm_mtag2.c:19 frob2() implied: *val = '2' 53 * check-output-end 54 */