diff options
author | Keith Packard <keithp@keithp.com> | 2018-08-27 21:32:31 +0300 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2018-08-29 17:05:37 +0300 |
commit | 82dfae9ab0734b9946321590162dc6021057fec1 (patch) | |
tree | f249be4fc23400d6e7a24139ff09b08812444bc5 /newlib/libc/machine/visium | |
parent | 088a45cdf6a01059b5c4a7565e83c2bca83c8da5 (diff) |
Use __inhibit_loop_to_libcall in all memset/memcpy implementations
This macro selects a compiler option that disables recognition of
common memset/memcpy patterns and converting those to direct
memset/memcpy calls.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'newlib/libc/machine/visium')
-rw-r--r-- | newlib/libc/machine/visium/memcpy.c | 5 | ||||
-rw-r--r-- | newlib/libc/machine/visium/memset.c | 6 |
2 files changed, 10 insertions, 1 deletions
diff --git a/newlib/libc/machine/visium/memcpy.c b/newlib/libc/machine/visium/memcpy.c index c5110064d..e64403135 100644 --- a/newlib/libc/machine/visium/memcpy.c +++ b/newlib/libc/machine/visium/memcpy.c @@ -31,6 +31,7 @@ #include <stddef.h> #include "memcpy.h" +#include "../../string/local.h" #define INST_BARRIER __asm__ __volatile__ ("":::"memory"); @@ -422,6 +423,7 @@ do { \ static inline void +__inhibit_loop_to_libcall __int_memcpy (void *__restrict s1, const void *__restrict s2, size_t n) { int value = n; @@ -562,6 +564,7 @@ __int_memcpy (void *__restrict s1, const void *__restrict s2, size_t n) } static inline void +__inhibit_loop_to_libcall __shrt_int_memcpy (void *__restrict s1, const void *__restrict s2, size_t n) { int value = n; @@ -703,6 +706,7 @@ __shrt_int_memcpy (void *__restrict s1, const void *__restrict s2, size_t n) static inline void +__inhibit_loop_to_libcall __byte_memcpy (void *__restrict s1, const void *__restrict s2, size_t n) { int value = n; @@ -846,6 +850,7 @@ __byte_memcpy (void *__restrict s1, const void *__restrict s2, size_t n) /* Exposed interface. */ void * +__inhibit_loop_to_libcall memcpy (void *__restrict s1, const void *__restrict s2, size_t n) { void *result = s1; diff --git a/newlib/libc/machine/visium/memset.c b/newlib/libc/machine/visium/memset.c index bad64a96d..5c3906aa6 100644 --- a/newlib/libc/machine/visium/memset.c +++ b/newlib/libc/machine/visium/memset.c @@ -31,6 +31,7 @@ #include <stddef.h> #include "memset.h" +#include "../../string/local.h" #define SET_32_OBJECTS(out) \ do { \ @@ -228,8 +229,8 @@ do { \ out += 1; \ } while(0) - static inline void +__inhibit_loop_to_libcall __int_memset (void *__restrict s1, int val, size_t n) { int value = n; @@ -369,6 +370,7 @@ __int_memset (void *__restrict s1, int val, size_t n) } static inline void +__inhibit_loop_to_libcall __short_int_memset (void *__restrict s1, int val, size_t n) { int value = n; @@ -508,6 +510,7 @@ __short_int_memset (void *__restrict s1, int val, size_t n) } static inline void +__inhibit_loop_to_libcall __byte_memset (void *__restrict s1, int val, size_t n) { int value = n; @@ -650,6 +653,7 @@ __byte_memset (void *__restrict s1, int val, size_t n) /* Exposed interface. */ void * +__inhibit_loop_to_libcall memset (void *s, int c, size_t n) { void *result = s; |