summaryrefslogtreecommitdiff
path: root/lib/regex.h
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2020-08-12 02:24:04 +0200
committerBruno Haible <bruno@clisp.org>2020-08-12 02:24:04 +0200
commit7ea8ff37c427918bf5c5f674fa9f928cdb0bed9b (patch)
tree7fbc086101106b2ae78a3c5c1e8554d4c89a3ac1 /lib/regex.h
parent559a86bccb8650c0e9b006234dfa170ed7fdb16a (diff)
downloadgnulib-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.h17
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_