cond_expr2.c 869 B

1234567891011121314151617181920212223
  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] [assigned] [toplevel] r
  20. cond_expr2.c:8:11: got int const volatile *
  21. * check-error-end
  22. */