From 10e4d79a191f07999bc94b21535fba5d7c04f419 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Tue, 10 Dec 2013 18:57:30 +0000 Subject: 2013-12-10 Jeff Johnston * 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. --- newlib/libc/string/local.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'newlib/libc/string/local.h') 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 + + -- cgit v1.2.3