diff options
author | Dan Albert <danalbert@google.com> | 2016-02-24 13:48:45 -0800 |
---|---|---|
committer | Dan Albert <danalbert@google.com> | 2016-02-24 13:51:18 -0800 |
commit | b9de1157289455b0ca26daff519d4a0ddcd1fa13 (patch) | |
tree | 4c56cc0a34b91f17033a40a455f26652304f7b8d /gcc-4.8.1/gcc/testsuite/gcc.dg/strlenopt-10.c | |
parent | 098157a754787181cfa10e71325832448ddcea98 (diff) | |
download | toolchain_gcc-b9de1157289455b0ca26daff519d4a0ddcd1fa13.tar.gz toolchain_gcc-b9de1157289455b0ca26daff519d4a0ddcd1fa13.tar.bz2 toolchain_gcc-b9de1157289455b0ca26daff519d4a0ddcd1fa13.zip |
Update 4.8.1 to 4.8.3.
My previous drop was the wrong version. The platform mingw is
currently using 4.8.3, not 4.8.1 (not sure how I got that wrong).
From ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.3/gcc-4.8.3.tar.bz2.
Bug: http://b/26523949
Change-Id: Id85f1bdcbbaf78c7d0b5a69e74c798a08f341c35
Diffstat (limited to 'gcc-4.8.1/gcc/testsuite/gcc.dg/strlenopt-10.c')
-rw-r--r-- | gcc-4.8.1/gcc/testsuite/gcc.dg/strlenopt-10.c | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/gcc-4.8.1/gcc/testsuite/gcc.dg/strlenopt-10.c b/gcc-4.8.1/gcc/testsuite/gcc.dg/strlenopt-10.c deleted file mode 100644 index a18c06ae0..000000000 --- a/gcc-4.8.1/gcc/testsuite/gcc.dg/strlenopt-10.c +++ /dev/null @@ -1,80 +0,0 @@ -/* { dg-do run } */ -/* { dg-options "-O2 -fdump-tree-strlen" } */ - -#include "strlenopt.h" - -__attribute__((noinline, noclone)) size_t -fn1 (char *p) -{ - char *q; - /* This can be optimized into memcpy and the size can be decreased to one, - as it is immediately overwritten. */ - strcpy (p, "z"); - q = strchr (p, '\0'); - *q = 32; - /* This strlen can't be optimized away, string length is unknown here. */ - return strlen (p); -} - -__attribute__((noinline, noclone)) void -fn2 (char *p, const char *z, size_t *lp) -{ - char *q, *r; - char buf[64]; - size_t l[10]; - /* The first strlen stays, all the strcpy calls can be optimized - into memcpy and all other strlen calls and all strchr calls - optimized away. */ - l[0] = strlen (z); - strcpy (buf, z); - strcpy (p, "abcde"); - q = strchr (p, '\0'); - strcpy (q, "efghi"); - r = strchr (q, '\0'); - strcpy (r, "jkl"); - l[1] = strlen (p); - l[2] = strlen (q); - l[3] = strlen (r); - strcpy (r, buf); - l[4] = strlen (p); - l[5] = strlen (q); - l[6] = strlen (r); - strcpy (r, "mnopqr"); - l[7] = strlen (p); - l[8] = strlen (q); - l[9] = strlen (r); - memcpy (lp, l, sizeof l); -} - -int -main () -{ - char buf[64]; - size_t l[10]; - const char *volatile z = "ABCDEFG"; - memset (buf, '\0', sizeof buf); - if (fn1 (buf) != 2 || buf[0] != 'z' || buf[1] != 32 || buf[2] != '\0') - abort (); - fn2 (buf, z, l); - if (memcmp (buf, "abcdeefghimnopqr", 17) != 0) - abort (); - if (l[0] != 7) - abort (); - if (l[1] != 13 || l[2] != 8 || l[3] != 3) - abort (); - if (l[4] != 17 || l[5] != 12 || l[6] != 7) - abort (); - if (l[7] != 16 || l[8] != 11 || l[9] != 6) - abort (); - return 0; -} - -/* { dg-final { scan-tree-dump-times "strlen \\(" 2 "strlen" } } */ -/* { dg-final { scan-tree-dump-times "memcpy \\(" 8 "strlen" } } */ -/* { dg-final { scan-tree-dump-times "strcpy \\(" 0 "strlen" } } */ -/* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */ -/* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */ -/* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */ -/* { dg-final { scan-tree-dump-times "\\*q_\[0-9\]* = 32;" 1 "strlen" } } */ -/* { dg-final { scan-tree-dump-times "memcpy \\(\[^\n\r\]*, 1\\)" 1 "strlen" } } */ -/* { dg-final { cleanup-tree-dump "strlen" } } */ |