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