/* $NetBSD: op_colon.c,v 1.8 2024/01/28 08:17:27 rillig Exp $ */ # 3 "op_colon.c" /* * Test handling of the operator ':', as part of the '?:'. */ /* lint1-extra-flags: -p -X 351 */ struct canary { int member; }; void sink(struct canary); void test_merge_qualifiers(_Bool cond, int *p, const int *c, volatile int *v, const volatile int *cv) { /* expect+1: ... 'pointer to int' ... */ sink(cond ? p : p); /* expect+1: ... 'pointer to const int' ... */ sink(cond ? p : c); /* expect+1: ... 'pointer to volatile int' ... */ sink(cond ? p : v); /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? p : cv); /* expect+1: ... 'pointer to const int' ... */ sink(cond ? c : p); /* expect+1: ... 'pointer to const int' ... */ sink(cond ? c : c); /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? c : v); /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? c : cv); /* expect+1: ... 'pointer to volatile int' ... */ sink(cond ? v : p); /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? v : c); /* expect+1: ... 'pointer to volatile int' ... */ sink(cond ? v : v); /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? v : cv); /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? cv : p); /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? cv : c); /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? cv : v); /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? cv : cv); } /* null pointer constant + other pointer */ void c99_6_5_15_p6(_Bool cond, const volatile double *cv_dp) { /* expect+1: ... 'pointer to const volatile double' ... */ sink(cond ? cv_dp : (void *)0); /* expect+1: ... 'pointer to const volatile double' ... */ sink(cond ? (void *)0 : cv_dp); } void c99_6_5_15_p8( _Bool cond, const void *c_vp, void *vp, const int *c_ip, volatile int *v_ip, int *ip, const char *c_cp ) { /* expect+1: ... 'pointer to const void' ... */ sink(cond ? c_vp : c_ip); /* expect+1: ... 'pointer to const void' ... */ sink(cond ? c_ip : c_vp); /* expect+1: ... 'pointer to volatile int' ... */ sink(cond ? v_ip : 0); /* expect+1: ... 'pointer to volatile int' ... */ sink(cond ? 0 : v_ip); /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? c_ip : v_ip); /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? v_ip : c_ip); /* expect+1: ... 'pointer to const void' ... */ sink(cond ? vp : c_cp); /* expect+1: ... 'pointer to const void' ... */ sink(cond ? c_cp : vp); /* expect+1: ... 'pointer to const int' ... */ sink(cond ? ip : c_ip); /* expect+1: ... 'pointer to const int' ... */ sink(cond ? c_ip : ip); /* expect+1: ... 'pointer to void' ... */ sink(cond ? vp : ip); /* expect+1: ... 'pointer to void' ... */ sink(cond ? ip : vp); }