1 extern const int *p;
   2 extern volatile void *q;
   3 extern volatile int *r;
   4 static void f(void)
   5 {
   6         q = 1 ? p : q;  // warn: const volatile void * -> const int *
   7         r = 1 ? r : q;  // OK: volatile void * -> volatile int *
   8         r = 1 ? r : p;  // warn: const volatile int * -> volatile int *
   9 }
  10 /*
  11  * check-name: type of conditional expression
  12  * check-description: Used to miss qualifier mixing and mishandle void *
  13  *
  14  * check-error-start
  15 cond_expr2.c:6:11: warning: incorrect type in assignment (different modifiers)
  16 cond_expr2.c:6:11:    expected void volatile *extern [addressable] [toplevel] q
  17 cond_expr2.c:6:11:    got void const volatile *
  18 cond_expr2.c:8:11: warning: incorrect type in assignment (different modifiers)
  19 cond_expr2.c:8:11:    expected int volatile *extern [addressable] [toplevel] [assigned] r
  20 cond_expr2.c:8:11:    got int const volatile *
  21  * check-error-end
  22  */