Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2018-08-27 21:32:31 +0300
committerCorinna Vinschen <corinna@vinschen.de>2018-08-29 17:05:37 +0300
commit82dfae9ab0734b9946321590162dc6021057fec1 (patch)
treef249be4fc23400d6e7a24139ff09b08812444bc5 /newlib/libc/machine/visium
parent088a45cdf6a01059b5c4a7565e83c2bca83c8da5 (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.c5
-rw-r--r--newlib/libc/machine/visium/memset.c6
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;