]> git.eshelyaron.com Git - emacs.git/commitdiff
Work around __has_attribute bug in clang 3.4
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 22 Jan 2021 19:47:22 +0000 (11:47 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 22 Jan 2021 20:02:56 +0000 (12:02 -0800)
* src/conf_post.h (HAS_ATTRIBUTE):
* src/emacs-module.h.in (EMACS_ATTRIBUTE_NONNULL):
Port to clang 3.4 and earlier.

src/conf_post.h
src/emacs-module.h.in

index bd56f29e2879ead7dce155afa247063744db4cf3..176ab28b21ab2d3876a415ff60314dc8cf48091c 100644 (file)
@@ -71,7 +71,9 @@ typedef bool bool_bf;
    It is used only on arguments like cleanup that are handled here.
    This macro should be used only in #if expressions, as Oracle
    Studio 12.5's __has_attribute does not work in plain code.  */
-#ifdef __has_attribute
+#if (defined __has_attribute \
+     && (!defined __clang_minor__ \
+         || 3 < __clang_major__ + (5 <= __clang_minor__)))
 # define HAS_ATTRIBUTE(a) __has_attribute (__##a##__)
 #else
 # define HAS_ATTRIBUTE(a) HAS_ATTR_##a
index 2989b439109f1d26550bfed6b6c4feccaf398782..fe52587c1a53e79df88365555ea909bd7ec97388 100644 (file)
@@ -51,7 +51,9 @@ information how to write modules and use this header file.
 #if 3 < __GNUC__ + (3 <= __GNUC_MINOR__)
 # define EMACS_ATTRIBUTE_NONNULL(...) \
    __attribute__ ((__nonnull__ (__VA_ARGS__)))
-#elif defined __has_attribute
+#elif (defined __has_attribute \
+       && (!defined __clang_minor__ \
+          || 3 < __clang_major__ + (5 <= __clang_minor__)))
 # if __has_attribute (__nonnull__)
 #  define EMACS_ATTRIBUTE_NONNULL(...) \
     __attribute__ ((__nonnull__ (__VA_ARGS__)))