1// RUN: %clang_cc1 -std=c++1y -verify %s 2 3// expected-no-diagnostics 4constexpr void copy(const char *from, unsigned long count, char *to) { 5 unsigned long n = (count + 7) / 8; 6 switch(count % 8) { 7 case 0: do { *to++ = *from++; 8 case 7: *to++ = *from++; 9 case 6: *to++ = *from++; 10 case 5: *to++ = *from++; 11 case 4: *to++ = *from++; 12 case 3: *to++ = *from++; 13 case 2: *to++ = *from++; 14 case 1: *to++ = *from++; 15 } while(--n > 0); 16 } 17} 18 19struct S { 20 char stuff[14]; 21 constexpr S() : stuff{} { 22 copy("Hello, world!", 14, stuff); 23 } 24}; 25 26constexpr bool streq(const char *a, const char *b) { 27 while (*a && *a == *b) ++a, ++b; 28 return *a == *b; 29} 30 31static_assert(streq(S().stuff, "Hello, world!"), "should be same"); 32static_assert(!streq(S().stuff, "Something else"), "should be different"); 33