annotate gcc/testsuite/g++.dg/cpp0x/constexpr-84463.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 // PR c++/84463
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 // { dg-do compile { target c++11 } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 struct S { int r; const unsigned char s[5]; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 static constexpr S a[] = { { 0, "abcd" } };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 struct T { const unsigned char s[5]; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 static constexpr T b[] = { { "abcd" } };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 constexpr int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 foo (const unsigned char *x)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 return x[0];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 constexpr static const S *j = &a[0];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 constexpr static const int k = j->s[0];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 constexpr static int l = foo (a[0].s);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 constexpr static int m = foo (j->s);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 constexpr static const T *n = &b[0];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 constexpr static const int o = n->s[0];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 constexpr static int p = foo (b[0].s);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 constexpr static int q = foo (n->s);