summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormartynas <martynas@openbsd.org>2011-06-08 22:00:34 +0000
committermartynas <martynas@openbsd.org>2011-06-08 22:00:34 +0000
commit62d98928b165013517fd53454d2d03ca1898972f (patch)
treeb43906d9141e1d36fe9441c86c0e42ed78283002
parentdo not document the -c flag: it was added for posix compliance, (diff)
downloadwireguard-openbsd-62d98928b165013517fd53454d2d03ca1898972f.tar.xz
wireguard-openbsd-62d98928b165013517fd53454d2d03ca1898972f.zip
On ARM, make GCC generate code which uses our library fabs, fabsf,
and fabsl calls, instead of inlining its builtins implemented with __gedf2 & __negdf2 softfloat calls which is wrong and actually slower. Looked over by miod@. Also kettenis@ noted, that GCC4 has this fixed.
-rw-r--r--gnu/usr.bin/gcc/gcc/builtins.def15
1 files changed, 15 insertions, 0 deletions
diff --git a/gnu/usr.bin/gcc/gcc/builtins.def b/gnu/usr.bin/gcc/gcc/builtins.def
index 39279a1e514..e8bef49bdd0 100644
--- a/gnu/usr.bin/gcc/gcc/builtins.def
+++ b/gnu/usr.bin/gcc/gcc/builtins.def
@@ -159,6 +159,20 @@ DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_LABS,
"__builtin_labs",
BT_FN_LONG_LONG)
+#ifdef __arm__
+DEF_FALLBACK_BUILTIN(BUILT_IN_FABS,
+ "__builtin_fabs",
+ BT_FN_DOUBLE_DOUBLE,
+ ATTR_CONST_NOTHROW_LIST)
+DEF_FALLBACK_BUILTIN(BUILT_IN_FABSF,
+ "__builtin_fabsf",
+ BT_FN_FLOAT_FLOAT,
+ ATTR_CONST_NOTHROW_LIST)
+DEF_FALLBACK_BUILTIN(BUILT_IN_FABSL,
+ "__builtin_fabsl",
+ BT_FN_LONG_DOUBLE_LONG_DOUBLE,
+ ATTR_CONST_NOTHROW_LIST)
+#else /* __arm__ */
DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABS,
"__builtin_fabs",
BT_FN_DOUBLE_DOUBLE)
@@ -168,6 +182,7 @@ DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABSF,
DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABSL,
"__builtin_fabsl",
BT_FN_LONG_DOUBLE_LONG_DOUBLE)
+#endif /* __arm__ */
DEF_C99_BUILTIN(BUILT_IN_LLABS,
"__builtin_llabs",