summaryrefslogtreecommitdiffstats
path: root/newlib/libc/string/local.h
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2013-12-10 18:57:30 +0000
committerJeff Johnston <jjohnstn@redhat.com>2013-12-10 18:57:30 +0000
commit10e4d79a191f07999bc94b21535fba5d7c04f419 (patch)
treedd9f0587036281f112a92162f6d39684c511c89b /newlib/libc/string/local.h
parenta6a307d8c2983656ac207bba6c59b44e13ad377d (diff)
downloadcygnal-10e4d79a191f07999bc94b21535fba5d7c04f419.tar.gz
cygnal-10e4d79a191f07999bc94b21535fba5d7c04f419.tar.bz2
cygnal-10e4d79a191f07999bc94b21535fba5d7c04f419.zip
2013-12-10 Jeff Johnston <jjohnstn@redhat.com>
* acconfig.h: Add _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL. * newlib.hin: Ditto. * configure: Regenerate. * configure.in: Add setting of _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL. * libc/string/local.h: Add check for _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL and set __inhibit_loop_to_libcall macro appropriately. * libc/string/memmove.c: Use __inhibit_loop_to_libcall macro in function declaration. * libc/string/memset.c: Ditto.
Diffstat (limited to 'newlib/libc/string/local.h')
-rw-r--r--newlib/libc/string/local.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/newlib/libc/string/local.h b/newlib/libc/string/local.h
index 5d17dccc4..dfe01d70b 100644
--- a/newlib/libc/string/local.h
+++ b/newlib/libc/string/local.h
@@ -7,3 +7,18 @@ int _EXFUN (__wcwidth, (wint_t));
/* Defined in locale/locale.c. Returns a value != 0 if the current
language is assumed to use CJK fonts. */
int __locale_cjk_lang ();
+
+/*
+ Taken from glibc:
+ Add the compiler optimization to inhibit loop transformation to library
+ calls. This is used to avoid recursive calls in memset and memmove
+ default implementations.
+*/
+#ifdef _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL
+# define __inhibit_loop_to_libcall \
+ __attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
+#else
+# define __inhibit_loop_to_libcall
+#endif
+
+