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