• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cc1 -fsyntax-only -Wno-pointer-to-int-cast -verify %s
2 typedef long unsigned int __darwin_size_t;
3 typedef long __darwin_ssize_t;
4 typedef __darwin_size_t size_t;
5 typedef __darwin_ssize_t ssize_t;
6 
7 struct cmsghdr {};
8 
9 #if 0
10 This code below comes from the following system headers:
11 sys/socket.h:#define CMSG_SPACE(l) (__DARWIN_ALIGN(sizeof(struct
12 cmsghdr)) + __DARWIN_ALIGN(l))
13 
14 i386/_param.h:#define __DARWIN_ALIGN(p) ((__darwin_size_t)((char *)(p)
15 + __DARWIN_ALIGNBYTES) &~ __DARWIN_ALIGNBYTES)
16 #endif
17 
sendFileDescriptor(int fd,void * data,size_t nbytes,int sendfd)18 ssize_t sendFileDescriptor(int fd, void *data, size_t nbytes, int sendfd) {
19   union {
20     // expected-warning@+1 {{folded to constant array}}
21     char control[(((__darwin_size_t)((char *)(sizeof(struct cmsghdr)) + (sizeof(__darwin_size_t) - 1)) &~ (sizeof(__darwin_size_t) - 1)) + ((__darwin_size_t)((char *)(sizeof(int)) + (sizeof(__darwin_size_t) - 1)) &~ (sizeof(__darwin_size_t) - 1)))];
22   } control_un;
23   return 0;
24 }
25 
26