diff options
author | Jakub Jelinek <jakub@redhat.com> | 2003-05-05 21:31:35 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2003-05-05 21:31:35 +0200 |
commit | e3e9f1084699af912b12b5a63c64c72dc868854f (patch) | |
tree | 28d5a88a130f796c626606f2d26616bec3b414a9 /gcc/testsuite | |
parent | 6035d635b5b0bfb86fcb6413f6828d18ab4cf1f2 (diff) | |
download | gcc-e3e9f1084699af912b12b5a63c64c72dc868854f.zip gcc-e3e9f1084699af912b12b5a63c64c72dc868854f.tar.gz gcc-e3e9f1084699af912b12b5a63c64c72dc868854f.tar.bz2 |
builtins.c (expand_builtin_mempcpy): New function.
* builtins.c (expand_builtin_mempcpy): New function.
(expand_builtin_stpcpy): Optimize stpcpy whose return value is
ignored into strcpy no matter what arguments it has.
(expand_builtin) <case BUILT_IN_MEMPCPY>: Call
expand_builtin_mempcpy.
* gcc.c-torture/execute/string-opt-18.c (main): Add 3 new tests.
From-SVN: r66498
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/string-opt-18.c | 14 |
2 files changed, 18 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 92a7679..536043a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-05-05 Jakub Jelinek <jakub@redhat.com> + + * gcc.c-torture/execute/string-opt-18.c (main): Add 3 new tests. + 2003-05-05 Geoffrey Keating <geoffk@apple.com> * gcc.dg/unused-5.c: New test. diff --git a/gcc/testsuite/gcc.c-torture/execute/string-opt-18.c b/gcc/testsuite/gcc.c-torture/execute/string-opt-18.c index 0ba2be6..dfa5c16 100644 --- a/gcc/testsuite/gcc.c-torture/execute/string-opt-18.c +++ b/gcc/testsuite/gcc.c-torture/execute/string-opt-18.c @@ -15,6 +15,9 @@ extern int memcmp (const void *, const void *, size_t); const char s1[] = "123"; char p[32] = ""; +char *s2 = "defg"; +char *s3 = "FGH"; +size_t l1 = 1; int main() { @@ -60,6 +63,17 @@ int main() if (__builtin_mempcpy (p, "ABCDE", 6) != p + 6 || memcmp (p, "ABCDE", 6)) abort (); + /* If the result of stpcpy/mempcpy is ignored, gcc should use + strcpy/memcpy. */ + stpcpy (p + 3, s2); + if (memcmp (p, "ABCdefg", 8)) + abort (); + mempcpy (p + 5, s3, 1); + if (memcmp (p, "ABCdeFg", 8)) + abort (); + mempcpy (p + 6, s3 + 1, l1); + if (memcmp (p, "ABCdeFG", 8)) + abort (); return 0; } |