With (probably) -Wmaybe-uninitialized and/or -Wextra, shouldn't the compiler 
emit
warning about possibly uninitialized 'y' passed to 'ddd()' in the example below?

struct T {
  int a;
  int b;
};

extern int bbb (struct T *, int *);
extern int ccc (struct T *, int *);
extern int ddd (struct T *, int);

int
aaa (struct T *t)
{
  int x = 0, y;         /* 'y' is uninitialized */

  if (t->a)             /* if this condition is true */
    goto l;

  x += bbb (t, &y);

 l:
  if (t->b)             /* and this condition is false */
      x += ccc (t, &y);

  x += ddd (t, y);      /* then 'y' is passed to ddd() uninitialized */

  return x;
}

Dmitry

Reply via email to