> clang supports expression statement syntax (a block inside parentheses) like > GCC. This patch makes use of it.
Two further places where expression statements can be enabled in clang, for better optimization: 2020-08-16 Bruno Haible <br...@clisp.org> setenv: Use tree code also with clang. * lib/setenv.c (USE_TSEARCH): Treat clang like GCC. 2020-08-16 Bruno Haible <br...@clisp.org> math: Optimize signbit also on clang. * lib/math.in.h (gl_signbitf, gl_signbitd, gl_signbitl): Optimize also on clang.
>From ad3f6af5cea05a6aa9d6bf8588ef024d24f3b6ef Mon Sep 17 00:00:00 2001 From: Bruno Haible <br...@clisp.org> Date: Sun, 16 Aug 2020 18:39:29 +0200 Subject: [PATCH 1/2] math: Optimize signbit also on clang. * lib/math.in.h (gl_signbitf, gl_signbitd, gl_signbitl): Optimize also on clang. --- ChangeLog | 6 ++++++ lib/math.in.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 81ed349..2e78c4f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2020-08-16 Bruno Haible <br...@clisp.org> + math: Optimize signbit also on clang. + * lib/math.in.h (gl_signbitf, gl_signbitd, gl_signbitl): Optimize also + on clang. + +2020-08-16 Bruno Haible <br...@clisp.org> + avltreehash-list, rbtreehash-list: Optimize also on clang. * lib/gl_anytreehash_list1.h (add_nodes_to_buckets): Use __builtin_expect also on clang. diff --git a/lib/math.in.h b/lib/math.in.h index 99b7e32..0f67127 100644 --- a/lib/math.in.h +++ b/lib/math.in.h @@ -2536,7 +2536,7 @@ _GL_WARN_REAL_FLOATING_DECL (isnan); _GL_EXTERN_C int gl_signbitf (float arg); _GL_EXTERN_C int gl_signbitd (double arg); _GL_EXTERN_C int gl_signbitl (long double arg); -# if __GNUC__ >= 2 && !defined __STRICT_ANSI__ +# if (__GNUC__ >= 2 || defined __clang__) && !defined __STRICT_ANSI__ # define _GL_NUM_UINT_WORDS(type) \ ((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) # if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf -- 2.7.4
>From 5a459e1cf0deb13b90313da377fe6cb2d8ccff73 Mon Sep 17 00:00:00 2001 From: Bruno Haible <br...@clisp.org> Date: Sun, 16 Aug 2020 18:39:33 +0200 Subject: [PATCH 2/2] setenv: Use tree code also with clang. * lib/setenv.c (USE_TSEARCH): Treat clang like GCC. --- ChangeLog | 5 +++++ lib/setenv.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 2e78c4f..b750f34 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2020-08-16 Bruno Haible <br...@clisp.org> + setenv: Use tree code also with clang. + * lib/setenv.c (USE_TSEARCH): Treat clang like GCC. + +2020-08-16 Bruno Haible <br...@clisp.org> + math: Optimize signbit also on clang. * lib/math.in.h (gl_signbitf, gl_signbitd, gl_signbitl): Optimize also on clang. diff --git a/lib/setenv.c b/lib/setenv.c index d03bc5a..aede703 100644 --- a/lib/setenv.c +++ b/lib/setenv.c @@ -72,7 +72,7 @@ __libc_lock_define_initialized (static, envlock) values are from a small set. Outside glibc this will eat up all memory after a while. */ #if defined _LIBC || (defined HAVE_SEARCH_H && defined HAVE_TSEARCH \ - && defined __GNUC__) + && (defined __GNUC__ || defined __clang__)) # define USE_TSEARCH 1 # include <search.h> typedef int (*compar_fn_t) (const void *, const void *); -- 2.7.4