summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2020-08-07 02:12:09 +0200
committerBruno Haible <bruno@clisp.org>2020-08-07 02:12:09 +0200
commit564afbf88812844f83589d091bff88af55556de6 (patch)
treeecf93311fd3e6f63ea19734c31549ef27cee781c
parentfef32067411958cf5b7300de0de92ab179bee149 (diff)
downloadgnulib-564afbf88812844f83589d091bff88af55556de6.tar.gz
gnulib-564afbf88812844f83589d091bff88af55556de6.tar.bz2
Use __builtin_assume with clang.
* lib/verify.h (_GL_HAS_BUILTIN_ASSUME): New macro. (assume): Use __builtin_assume when available.
-rw-r--r--ChangeLog6
-rw-r--r--lib/verify.h11
2 files changed, 16 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index d78accc3e6..19aff68253 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1 +1,7 @@
12020-08-06 Bruno Haible <bruno@clisp.org>
2
3 Use __builtin_assume with clang.
4 * lib/verify.h (_GL_HAS_BUILTIN_ASSUME): New macro.
5 (assume): Use __builtin_assume when available.
6
12020-08-06 Paul Eggert <eggert@cs.ucla.edu> 72020-08-06 Paul Eggert <eggert@cs.ucla.edu>
diff --git a/lib/verify.h b/lib/verify.h
index f109761270..58172f3cb7 100644
--- a/lib/verify.h
+++ b/lib/verify.h
@@ -235,2 +235,9 @@ template <int w>
235 235
236#if defined __has_builtin
237/* <https://clang.llvm.org/docs/LanguageExtensions.html#builtin-functions> */
238# define _GL_HAS_BUILTIN_ASSUME __has_builtin (__builtin_assume)
239#else
240# define _GL_HAS_BUILTIN_ASSUME 0
241#endif
242
236#if 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__)) 243#if 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__))
@@ -296,3 +303,5 @@ template <int w>
296 303
297#if _GL_HAS_BUILTIN_UNREACHABLE 304#if _GL_HAS_BUILTIN_ASSUME
305# define assume(R) __builtin_assume (R)
306#elif _GL_HAS_BUILTIN_UNREACHABLE
298# define assume(R) ((R) ? (void) 0 : __builtin_unreachable ()) 307# define assume(R) ((R) ? (void) 0 : __builtin_unreachable ())

Return to:

Send suggestions and report system problems to the System administrator.