/* { dg-do run } */ | |
#define N 23 | |
#define MAX_LEN 13 | |
char dst[N + 1]; | |
void __attribute__((noipa)) | |
invert(const char *id) | |
{ | |
char buf[MAX_LEN]; | |
char *ptr = buf + sizeof(buf); // start from the end of buf | |
*(--ptr) = '\0'; // terminate string | |
while (*id && ptr > buf) { | |
*(--ptr) = *(id++); // copy id backwards | |
} | |
__builtin_strncpy(dst, ptr, N); // copy ptr/buf to dst | |
} | |
int main() | |
{ | |
invert("abcde"); | |
if (__builtin_strcmp(dst, "edcba")) | |
__builtin_abort(); | |
return 0; | |
} |