1extern int printf(const char *, ...);
2typedef unsigned short          ushort;
3struct sembuf {
4  ushort  sem_num;
5  short   sem_op;
6  short   sem_flg;
7};
8union semun {
9  int val;
10  struct semid_ds *buf;
11  ushort *array;
12  struct seminfo *__buf;
13  void *__pad;
14};
15static union semun semctl_arg;
16static int semid;
17static void up(int sem){
18  struct sembuf sb;
19  sb.sem_num = (unsigned short) sem;
20  sb.sem_op  = 1;
21  sb.sem_flg = 0x1000 ;
22  if(semop(semid, &sb, 1) == -1) error("up failure");
23  if(semctl(semid, sb.sem_num, 12 , semctl_arg) == 0)
24    printf("%s had processes sleeping on it!\n",
25    ({ "MUTEX     ", "BARB_SEM 1", "BARB_SEM 2", "CUST_SEM 1",
26       "CUST_SEM 2", "WAIT_SEM 1", "WAIT_SEM 2", "WAIT_SEM 3",
27       "WAIT_SEM 4"}	 /* { dg-error "parse error|syntax error|expected" } */
28	[( sb.sem_num )]) ); /* { dg-error "expected" } */
29}
30