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