26 lines · c
1// RUN: %clang_cc1 -fsyntax-only -Wno-pointer-to-int-cast -verify %s2typedef long unsigned int __darwin_size_t;3typedef long __darwin_ssize_t;4typedef __darwin_size_t size_t;5typedef __darwin_ssize_t ssize_t;6 7struct cmsghdr {};8 9#if 010This code below comes from the following system headers:11sys/socket.h:#define CMSG_SPACE(l) (__DARWIN_ALIGN(sizeof(struct 12cmsghdr)) + __DARWIN_ALIGN(l))13 14i386/_param.h:#define __DARWIN_ALIGN(p) ((__darwin_size_t)((char *)(p) 15+ __DARWIN_ALIGNBYTES) &~ __DARWIN_ALIGNBYTES)16#endif17 18ssize_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