root/usr/src/tools/smatch/src/validation/sm_select.c
struct foo {
        int a;
};

struct foo *a;
struct foo *b;

struct foo *c;
struct foo *d;
struct foo *e;
void func (void)
{
        if (a?b:0) {
                a->a = 1;
                b->a = 1;
        }
        a->a = 1;
        b->a = 1;
        e->a = 1;
        d = returns_nonnull();
        if (c?d:e) {
                c->a = 1;
                d->a = 1;
                e->a = 1;
        }
        e->a = 1;
}

/*
 * check-name: Ternary Conditions
 * check-command: smatch sm_select.c
 *
 * check-output-start
sm_select.c:17 func() error: we previously assumed 'a' could be null (see line 13)
sm_select.c:18 func() error: we previously assumed 'b' could be null (see line 13)
sm_select.c:21 func() warn: variable dereferenced before check 'e' (see line 19)
sm_select.c:22 func() error: we previously assumed 'c' could be null (see line 21)
 * check-output-end
 */