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