1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 // expected-no-diagnostics 3 typedef long unsigned int __darwin_size_t; 4 typedef long __darwin_ssize_t; 5 typedef __darwin_size_t size_t; 6 typedef __darwin_ssize_t ssize_t; 7 8 struct cmsghdr {}; 9 10 #if 0 11 This code below comes from the following system headers: 12 sys/socket.h:#define CMSG_SPACE(l) (__DARWIN_ALIGN(sizeof(struct 13 cmsghdr)) + __DARWIN_ALIGN(l)) 14 15 i386/_param.h:#define __DARWIN_ALIGN(p) ((__darwin_size_t)((char *)(p) 16 + __DARWIN_ALIGNBYTES) &~ __DARWIN_ALIGNBYTES) 17 #endif 18 19 ssize_t sendFileDescriptor(int fd, void *data, size_t nbytes, int sendfd) { 20 union { 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