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 void frob_int1(int val)
12 {
13 __smatch_implied(val);
14 }
15
16 static void frob_int2(int val)
17 {
18 __smatch_implied(val);
19 }
20
21 static struct foo one_struct = {
22 .b = 41,
23 .func2 = frob_int1,
24 };
25
26 static struct foo two_struct = {
27 .b = 42,
28 .func2 = frob_int2,
29 };
30
31 struct foo *unknown(void);
32 struct foo *p;
33
34 int main(void)
35 {
36 int ret;
37
38 p = unknown();
39 p->func2(p->b);
40
41 return 0;
42 }
43
44 /*
45 * check-name: smatch mtag #4
46 * check-command: validation/smatch_db_test.sh -I.. sm_mtag4.c
47 *
48 * check-output-start
49 sm_mtag4.c:13 frob_int1() implied: val = '41'
50 sm_mtag4.c:18 frob_int2() implied: val = '42'
51 * check-output-end
52 */