diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/builtins/string-4.c')
| -rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/builtins/string-4.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/string-4.c b/gcc/testsuite/gcc.c-torture/execute/builtins/string-4.c index 0d0544e3de2..51819b1cfa9 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/string-4.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/string-4.c @@ -12,6 +12,7 @@ extern size_t strlen(const char *); extern void *memcpy (void *, const void *, size_t); extern void *mempcpy (void *, const void *, size_t); extern int memcmp (const void *, const void *, size_t); +extern int inside_main; const char s1[] = "123"; char p[32] = ""; @@ -24,6 +25,13 @@ main_test (void) { int i; +#if !defined __i386__ && !defined __x86_64__ + /* The functions below might not be optimized into direct stores on all + arches. It depends on how many instructions would be generated and + what limits the architecture chooses in STORE_BY_PIECES_P. */ + inside_main = 0; +#endif + if (stpcpy (p, "abcde") != p + 5 || memcmp (p, "abcde", 6)) abort (); if (stpcpy (p + 16, "vwxyz" + 1) != p + 16 + 4 || memcmp (p + 16, "wxyz", 5)) @@ -63,7 +71,9 @@ main_test (void) abort (); /* If the result of stpcpy/mempcpy is ignored, gcc should use - strcpy/memcpy. */ + strcpy/memcpy. This should be optimized always, so set inside_main + again. */ + inside_main = 1; stpcpy (p + 3, s2); if (memcmp (p, "ABCdefg", 8)) abort (); |

