root/usr/src/tools/smatch/src/validation/cond_expr2.c
extern const int *p;
extern volatile void *q;
extern volatile int *r;
static void f(void)
{
        q = 1 ? p : q;  // warn: const volatile void * -> const int *
        r = 1 ? r : q;  // OK: volatile void * -> volatile int *
        r = 1 ? r : p;  // warn: const volatile int * -> volatile int *
}
/*
 * check-name: type of conditional expression
 * check-description: Used to miss qualifier mixing and mishandle void *
 *
 * check-error-start
cond_expr2.c:6:11: warning: incorrect type in assignment (different modifiers)
cond_expr2.c:6:11:    expected void volatile *extern [addressable] [toplevel] q
cond_expr2.c:6:11:    got void const volatile *
cond_expr2.c:8:11: warning: incorrect type in assignment (different modifiers)
cond_expr2.c:8:11:    expected int volatile *extern [addressable] [toplevel] [assigned] r
cond_expr2.c:8:11:    got int const volatile *
 * check-error-end
 */