| /* { dg-do run } */ |
| /* { dg-options "-std=c23" } */ |
| |
| unsigned char a[] = { |
| #embed __FILE__ |
| }; |
| unsigned char b[] = { |
| [26] = |
| #embed __FILE__ |
| }; |
| unsigned char c[] = { |
| #embed __FILE__ suffix (,) |
| [sizeof (a) / 4] = 0, |
| [sizeof (a) / 2] = 1, |
| [1] = 2, |
| [sizeof (a) - 2] = 3 |
| }; |
| unsigned char d[] = { |
| [1] = 4, |
| [26] = 5, |
| [sizeof (a) / 4] = 6, |
| [sizeof (a) / 2] = 7, |
| [sizeof (a) - 2] = 8, |
| #embed __FILE__ prefix ([0] = ) |
| }; |
| unsigned char e[] = { |
| #embed __FILE__ suffix (,) |
| [2] = 9, |
| [sizeof (a) - 3] = 10 |
| }; |
| unsigned char f[] = { |
| [23] = 11, |
| [sizeof (a) / 4 - 1] = 12, |
| #embed __FILE__ limit (128) prefix ([sizeof (a) / 4 - 1] = ) suffix (,) |
| #embed __FILE__ limit (130) prefix ([sizeof (a) / 4 - 2] = ) suffix (,) |
| #embed __FILE__ prefix ([sizeof (a) / 4 + 10] = ) suffix (,) |
| #embed __FILE__ limit (128) prefix ([sizeof (a) + sizeof (a) / 4 - 30] = ) suffix (,) |
| #embed __FILE__ limit (128) prefix ([sizeof (a) / 4 + 96] = ) suffix (,) |
| }; |
| const unsigned char g[] = { |
| #embed __FILE__ limit (128) prefix ( [10] = 2, [5] = 3, [13] = 4, [17] = 5, [0] = ) |
| }; |
| unsigned char z[sizeof (a) / 4] = { |
| }; |
| |
| int |
| main () |
| { |
| if (sizeof (b) != sizeof (a) + 26 |
| || __builtin_memcmp (a, b + 26, sizeof (a))) |
| __builtin_abort (); |
| if (sizeof (c) != sizeof (a) |
| || a[0] != c[0] |
| || c[1] != 2 |
| || __builtin_memcmp (a + 2, c + 2, sizeof (a) / 4 - 2) |
| || c[sizeof (a) / 4] != 0 |
| || __builtin_memcmp (a + sizeof (a) / 4 + 1, c + sizeof (a) / 4 + 1, sizeof (a) / 2 - sizeof (a) / 4 - 1) |
| || c[sizeof (a) / 2] != 1 |
| || __builtin_memcmp (a + sizeof (a) / 2 + 1, c + sizeof (a) / 2 + 1, sizeof (a) - sizeof (a) / 2 - 3) |
| || c[sizeof (a) - 2] != 3 |
| || a[sizeof (a) - 1] != c[sizeof (a) - 1]) |
| __builtin_abort (); |
| if (sizeof (d) != sizeof (a) |
| || __builtin_memcmp (a, d, sizeof (a))) |
| __builtin_abort (); |
| if (sizeof (e) != sizeof (a) |
| || a[0] != e[0] |
| || a[1] != e[1] |
| || e[2] != 9 |
| || __builtin_memcmp (a + 3, e + 3, sizeof (a) - 6) |
| || e[sizeof (a) - 3] != 10 |
| || a[sizeof (a) - 2] != e[sizeof (a) - 2] |
| || a[sizeof (a) - 1] != e[sizeof (a) - 1]) |
| __builtin_abort (); |
| if (sizeof (f) != sizeof (a) + sizeof (a) / 4 - 30 + 128 |
| || __builtin_memcmp (z, f, 23) |
| || f[23] != 11 |
| || __builtin_memcmp (z, f + 24, sizeof (a) / 4 - 2 - 24) |
| || __builtin_memcmp (f + sizeof (a) / 4 - 2, a, 12) |
| || __builtin_memcmp (f + sizeof (a) / 4 + 10, a, 86) |
| || __builtin_memcmp (f + sizeof (a) / 4 + 96, a, 128) |
| || __builtin_memcmp (f + sizeof (a) / 4 + 96 + 128, a + 86 + 128, sizeof (a) - 86 - 128 - 40) |
| || __builtin_memcmp (f + sizeof (a) + sizeof (a) / 4 - 30, a, 128)) |
| __builtin_abort (); |
| if (sizeof (g) != 128 || __builtin_memcmp (g, a, 128)) |
| __builtin_abort (); |
| } |