aboutsummaryrefslogtreecommitdiff
path: root/test/Sema/darwin-align-cast.c
blob: 09808b5af2e83d22935abac598d2c0095ac00564 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// RUN: clang-cc -fsyntax-only -verify %s
typedef long unsigned int __darwin_size_t;
typedef long __darwin_ssize_t;
typedef __darwin_size_t size_t;
typedef __darwin_ssize_t ssize_t;

struct cmsghdr {};

#if 0
This code below comes from the following system headers:
sys/socket.h:#define	CMSG_SPACE(l)		(__DARWIN_ALIGN(sizeof(struct  
cmsghdr)) + __DARWIN_ALIGN(l))

i386/_param.h:#define	__DARWIN_ALIGN(p)	((__darwin_size_t)((char *)(p)  
+ __DARWIN_ALIGNBYTES) &~ __DARWIN_ALIGNBYTES)
#endif

ssize_t sendFileDescriptor(int fd, void *data, size_t nbytes, int sendfd) {
  union {
    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)))];
  } control_un;
}