aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2003-06-06 10:11:06 +0000
committerJakub Jelinek <jakub@redhat.com>2003-06-06 10:11:06 +0000
commit5fbb37b12b86eb59e107545ab801d7309c1c7073 (patch)
treefb7b5c5ee4bd67e982d7306ef0139e7cde311c08
parent4c0f17afa8b8557d638a05e97549c067a60dad70 (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/ChangeLog8
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/string-4.c12
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/string-7-lib.c2
-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);
}