1// RUN: %clang_cc1 -fsyntax-only -verify %s
2
3namespace attribute_aligned {
4  template<int N>
5  struct X {
6    char c[1] __attribute__((__aligned__((N)))); // expected-error {{alignment is not a power of 2}}
7  };
8
9  template <bool X> struct check {
10    int check_failed[X ? 1 : -1]; // expected-error {{array with a negative size}}
11  };
12
13  template <int N> struct check_alignment {
14    typedef check<N == sizeof(X<N>)> t; // expected-note {{in instantiation}}
15  };
16
17  check_alignment<1>::t c1;
18  check_alignment<2>::t c2;
19  check_alignment<3>::t c3; // expected-note 2 {{in instantiation}}
20  check_alignment<4>::t c4;
21}
22
23namespace PR9049 {
24  extern const void *CFRetain(const void *ref);
25
26  template<typename T> __attribute__((cf_returns_retained))
27  inline T WBCFRetain(T aValue) { return aValue ? (T)CFRetain(aValue) : (T)0; }
28
29
30  extern void CFRelease(const void *ref);
31
32  template<typename T>
33  inline void WBCFRelease(__attribute__((cf_consumed)) T aValue) { if(aValue) CFRelease(aValue); }
34}
35