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