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 */