1f08c3bdfSopenharmony_ci/* 2f08c3bdfSopenharmony_ci * Bug in original tree: (real_v ? : x) had been treated as equivalent of 3f08c3bdfSopenharmony_ci * (real_v == 0 ? real_v == 0 : x), which gives the wrong type (and no 4f08c3bdfSopenharmony_ci * warning from the testcase below). 5f08c3bdfSopenharmony_ci */ 6f08c3bdfSopenharmony_cistatic int x; 7f08c3bdfSopenharmony_cistatic double y; 8f08c3bdfSopenharmony_ciint a(void) 9f08c3bdfSopenharmony_ci{ 10f08c3bdfSopenharmony_ci return ~(y ? : x); /* should warn */ 11f08c3bdfSopenharmony_ci} 12f08c3bdfSopenharmony_ci/* 13f08c3bdfSopenharmony_ci * check-name: Two-argument conditional expression types 14f08c3bdfSopenharmony_ci * 15f08c3bdfSopenharmony_ci * check-error-start 16f08c3bdfSopenharmony_cicond_expr.c:10:16: error: incompatible type for operation (~): 17f08c3bdfSopenharmony_cicond_expr.c:10:16: double 18f08c3bdfSopenharmony_ci * check-error-end 19f08c3bdfSopenharmony_ci */ 20