1// RUN: %clang_cc1 -verify %s
2// expected-no-diagnostics
3
4template <unsigned I>
5class C0 {
6  static const int iv0 = 1 << I;
7
8  enum {
9    A = I,
10    B = I + 1
11  };
12
13  struct s0 {
14    int a : I;
15    int b[I];
16  };
17
18  // FIXME: I'm unclear where the right place to handle this is.
19#if 0
20  void f0(int *p) {
21    if (p == I) {
22    }
23  }
24#endif
25
26#if 0
27  // FIXME: Not sure whether we care about these.
28  void f1(int *a)
29    __attribute__((nonnull(1 + I)))
30    __attribute__((constructor(1 + I)))
31    __attribute__((destructor(1 + I)))
32    __attribute__((sentinel(1 + I, 2 + I))),
33    __attribute__((reqd_work_group_size(1 + I, 2 + I, 3 + I))),
34    __attribute__((format_arg(1 + I))),
35    __attribute__((aligned(1 + I))),
36    __attribute__((regparm(1 + I)));
37
38  typedef int int_a0 __attribute__((address_space(1 + B)));
39#endif
40
41#if 0
42  // FIXME: This doesn't work. PR4996.
43  int f2() {
44    return __builtin_choose_expr(I, 1, 2);
45  }
46#endif
47
48};
49