forked from OSchip/llvm-project
parent
1e3e8752a8
commit
ad3ab2ae61
|
@ -0,0 +1,32 @@
|
|||
// RUN: %clang_cc1 -std=c++1y -verify %s
|
||||
|
||||
// expected-no-diagnostics
|
||||
constexpr void copy(const char *from, unsigned long count, char *to) {
|
||||
unsigned long n = (count + 7) / 8;
|
||||
switch(count % 8) {
|
||||
case 0: do { *to++ = *from++;
|
||||
case 7: *to++ = *from++;
|
||||
case 6: *to++ = *from++;
|
||||
case 5: *to++ = *from++;
|
||||
case 4: *to++ = *from++;
|
||||
case 3: *to++ = *from++;
|
||||
case 2: *to++ = *from++;
|
||||
case 1: *to++ = *from++;
|
||||
} while(--n > 0);
|
||||
}
|
||||
}
|
||||
|
||||
struct S {
|
||||
char stuff[14];
|
||||
constexpr S() : stuff{} {
|
||||
copy("Hello, world!", 14, stuff);
|
||||
}
|
||||
};
|
||||
|
||||
constexpr bool streq(const char *a, const char *b) {
|
||||
while (*a && *a == *b) ++a, ++b;
|
||||
return *a == *b;
|
||||
}
|
||||
|
||||
static_assert(streq(S().stuff, "Hello, world!"), "should be same");
|
||||
static_assert(!streq(S().stuff, "Something else"), "should be different");
|
Loading…
Reference in New Issue