diff options
author | Adhemerval Zanella <azanella@linux.vnet.ibm.com> | 2013-06-20 19:40:55 -0500 |
---|---|---|
committer | Adhemerval Zanella <azanella@linux.vnet.ibm.com> | 2013-06-20 19:42:05 -0500 |
commit | 85c2e6110c9a01ec817c30f1b7e20549d7229987 (patch) | |
tree | 9b044403d906f9aaa6930484ae6d60dc687ecc19 /string | |
parent | b8c792af85fe3ff65c0cd68e2f291072a60cd953 (diff) | |
download | glibc-85c2e6110c9a01ec817c30f1b7e20549d7229987.zip glibc-85c2e6110c9a01ec817c30f1b7e20549d7229987.tar.gz glibc-85c2e6110c9a01ec817c30f1b7e20549d7229987.tar.bz2 |
Fix loop construction to functions calls
Check wheter the compiler has the option -fno-tree-loop-distribute-patterns
to inhibit loop transformation to library calls and uses it on memset
and memmove default implementation to avoid recursive calls.
Diffstat (limited to 'string')
-rw-r--r-- | string/memmove.c | 1 | ||||
-rw-r--r-- | string/memset.c | 1 | ||||
-rw-r--r-- | string/test-memmove.c | 1 | ||||
-rw-r--r-- | string/test-memset.c | 1 |
4 files changed, 4 insertions, 0 deletions
diff --git a/string/memmove.c b/string/memmove.c index 9dcd2f1..ec61e28 100644 --- a/string/memmove.c +++ b/string/memmove.c @@ -41,6 +41,7 @@ #endif rettype +inhibit_loop_to_libcall MEMMOVE (a1, a2, len) a1const void *a1; a2const void *a2; diff --git a/string/memset.c b/string/memset.c index 868be53..74b5409 100644 --- a/string/memset.c +++ b/string/memset.c @@ -21,6 +21,7 @@ #undef memset void * +inhibit_loop_to_libcall memset (dstpp, c, len) void *dstpp; int c; diff --git a/string/test-memmove.c b/string/test-memmove.c index 4ec55b2..94576a2 100644 --- a/string/test-memmove.c +++ b/string/test-memmove.c @@ -47,6 +47,7 @@ IMPL (memmove, 1) #endif char * +inhibit_loop_to_libcall simple_memmove (char *dst, const char *src, size_t n) { char *ret = dst; diff --git a/string/test-memset.c b/string/test-memset.c index 9981fce..72a390e 100644 --- a/string/test-memset.c +++ b/string/test-memset.c @@ -64,6 +64,7 @@ builtin_memset (char *s, int c, size_t n) #endif char * +inhibit_loop_to_libcall simple_memset (char *s, int c, size_t n) { char *r = s, *end = s + n; |