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