diff options
author | Jakub Jelinek <jakub@redhat.com> | 2003-06-06 10:11:06 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2003-06-06 10:11:06 +0000 |
commit | 5fbb37b12b86eb59e107545ab801d7309c1c7073 (patch) | |
tree | fb7b5c5ee4bd67e982d7306ef0139e7cde311c08 | |
parent | 4c0f17afa8b8557d638a05e97549c067a60dad70 (diff) |
* gcc.c-torture/execute/builtins/string-4.c (main_test): Allow some
mempcpy/stpcpy calls not to be optimized into something else.
* gcc.c-torture/execute/string-opt-3.c: Moved to...
* gcc.c-torture/execute/builtins/string-7.c: ...here.
* gcc.c-torture/execute/builtins/string-7-lib.c: New.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@67538 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/builtins/string-4.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/builtins/string-7-lib.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/builtins/string-7.c (renamed from gcc/testsuite/gcc.c-torture/execute/string-opt-3.c) | 9 |
4 files changed, 27 insertions, 4 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3494c609be8..4832f7312dc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2003-06-06 Jakub Jelinek <jakub@redhat.com> + + * gcc.c-torture/execute/builtins/string-4.c (main_test): Allow some + mempcpy/stpcpy calls not to be optimized into something else. + * gcc.c-torture/execute/string-opt-3.c: Moved to... + * gcc.c-torture/execute/builtins/string-7.c: ...here. + * gcc.c-torture/execute/builtins/string-7-lib.c: New. + 2003-06-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * gcc.dg/format/asm_fprintf-1.c: New test. 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 (); diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/string-7-lib.c b/gcc/testsuite/gcc.c-torture/execute/builtins/string-7-lib.c new file mode 100644 index 00000000000..3b69c3baea8 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/string-7-lib.c @@ -0,0 +1,2 @@ +#include "lib/stpcpy.c" +#include "lib/mempcpy.c" diff --git a/gcc/testsuite/gcc.c-torture/execute/string-opt-3.c b/gcc/testsuite/gcc.c-torture/execute/builtins/string-7.c index 71a41cdbf4e..5eb1ac4af78 100644 --- a/gcc/testsuite/gcc.c-torture/execute/string-opt-3.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/string-7.c @@ -9,6 +9,7 @@ typedef __SIZE_TYPE__ size_t; extern void *mempcpy (void *, const void *, size_t); extern int memcmp (const void *, const void *, size_t); extern char *stpcpy (char *, const char *); +extern int inside_main; long buf1[64]; char *buf2 = (char *) (buf1 + 32); @@ -157,10 +158,12 @@ test (long *buf3, char *buf4, char *buf6, int n) return 0; } -int -main () +void +main_test (void) { + /* All these tests are allowed to call mempcpy/stpcpy. */ + inside_main = 0; __builtin_memcpy (buf5, "RSTUVWXYZ0123456789", 20); __builtin_memcpy (buf7, "RSTUVWXYZ0123456789", 20); - return test (buf1, buf2, "rstuvwxyz", 0); + test (buf1, buf2, "rstuvwxyz", 0); } |