diff options
author | Bruno Haible <bruno@clisp.org> | 2020-08-07 02:12:09 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2020-08-07 02:12:09 +0200 |
commit | 564afbf88812844f83589d091bff88af55556de6 (patch) | |
tree | ecf93311fd3e6f63ea19734c31549ef27cee781c | |
parent | fef32067411958cf5b7300de0de92ab179bee149 (diff) | |
download | gnulib-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-- | ChangeLog | 6 | ||||
-rw-r--r-- | lib/verify.h | 11 |
2 files changed, 16 insertions, 1 deletions
@@ -1 +1,7 @@ | |||
1 | 2020-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 | |||
1 | 2020-08-06 Paul Eggert <eggert@cs.ucla.edu> | 7 | 2020-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 ()) |