1 struct ture {
   2         int a;
   3 };
   4 
   5 struct ture *a;
   6 struct ture *b;
   7 struct ture *c;
   8 
   9 void func (void)
  10 {
  11         struct ture *aa, *ab;
  12 
  13         b = 0;
  14         if (a) {
  15                 aa = returns_nonnull();
  16                 ab = returns_nonnull();
  17         } else {
  18                 b = -1;
  19         }
  20         if (!(b)) {
  21                 if (c) {
  22                         aa = (void *)0;
  23                         ab = (void *)0;
  24                         b = -1;
  25                 }
  26         }
  27         if (!c)
  28                 aa->a = 1;
  29         if (b)
  30                 return;
  31         ab->a = 1;
  32         return;
  33 }
  34 /*
  35  * check-name: Smatch implied #2
  36  * check-command: smatch --spammy sm_implied2.c
  37  *
  38  * check-output-start
  39 sm_implied2.c:28 func() error: potentially dereferencing uninitialized 'aa'.
  40 sm_implied2.c:28 func() error: potentially dereferencing uninitialized 'aa'.
  41  * check-output-end
  42  */