diff options
author | Bruno Haible <bruno@clisp.org> | 2020-08-12 02:24:04 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2020-08-12 02:24:04 +0200 |
commit | 7ea8ff37c427918bf5c5f674fa9f928cdb0bed9b (patch) | |
tree | 7fbc086101106b2ae78a3c5c1e8554d4c89a3ac1 /lib/regex.h | |
parent | 559a86bccb8650c0e9b006234dfa170ed7fdb16a (diff) | |
download | gnulib-7ea8ff37c427918bf5c5f674fa9f928cdb0bed9b.tar.gz |
Use __restrict also on clang.
* lib/cdefs.h (__restrict): Don't define as a macro on clang.
(__restrict_arr): On clang, define like on GCC.
* lib/regex.h (_Restrict_): Use '__restrict' also on clang.
(_Restrict_arr_): Use _Restrict_ also on clang.
* lib/spawn.in.h (_Restrict_): Use '__restrict' also on clang.
(_Restrict_arr_): Use _Restrict_ also on clang.
Diffstat (limited to 'lib/regex.h')
-rw-r--r-- | lib/regex.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/regex.h b/lib/regex.h index 5fe41c8685..7418e6c76f 100644 --- a/lib/regex.h +++ b/lib/regex.h @@ -612,7 +612,9 @@ extern int re_exec (const char *); 'configure' might #define 'restrict' to those words, so pick a different name. */ #ifndef _Restrict_ -# if defined __restrict || 2 < __GNUC__ + (95 <= __GNUC_MINOR__) +# if defined __restrict \ + || 2 < __GNUC__ + (95 <= __GNUC_MINOR__) \ + || __clang_major__ >= 3 # define _Restrict_ __restrict # elif 199901L <= __STDC_VERSION__ || defined restrict # define _Restrict_ restrict @@ -620,13 +622,18 @@ extern int re_exec (const char *); # define _Restrict_ # endif #endif -/* For [restrict], use glibc's __restrict_arr if available. - Otherwise, GCC 3.1 (not in C++ mode) and C99 support [restrict]. */ +/* For the ISO C99 syntax + array_name[restrict] + use glibc's __restrict_arr if available. + Otherwise, GCC 3.1 and clang support this syntax (but not in C++ mode). + Other ISO C99 compilers support it as well. */ #ifndef _Restrict_arr_ # ifdef __restrict_arr # define _Restrict_arr_ __restrict_arr -# elif ((199901L <= __STDC_VERSION__ || 3 < __GNUC__ + (1 <= __GNUC_MINOR__)) \ - && !defined __GNUG__) +# elif ((199901L <= __STDC_VERSION__ \ + || 3 < __GNUC__ + (1 <= __GNUC_MINOR__) \ + || __clang_major__ >= 3) \ + && !defined __cplusplus) # define _Restrict_arr_ _Restrict_ # else # define _Restrict_arr_ |