This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
don't disable __attribute__((always_inline)) on clang
authorTomasz Konojacki <me@xenu.pl>
Mon, 6 Apr 2020 11:04:05 +0000 (13:04 +0200)
committerKarl Williamson <khw@cpan.org>
Mon, 6 Apr 2020 13:06:30 +0000 (07:06 -0600)
clang pretends to be gcc 4.2

perl.h

diff --git a/perl.h b/perl.h
index 563edd6..bd92bfc 100644 (file)
--- a/perl.h
+++ b/perl.h
           : (REGEXP *)NULL)
 #endif
 
           : (REGEXP *)NULL)
 #endif
 
+/* some compilers impersonate gcc */
+#if defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER)
+#  define PERL_IS_GCC 1
+#endif
+
 /* In case Configure was not used (we are using a "canned config"
  * such as Win32, or a cross-compilation setup, for example) try going
  * by the gcc major and minor versions.  One useful URL is
 /* In case Configure was not used (we are using a "canned config"
  * such as Win32, or a cross-compilation setup, for example) try going
  * by the gcc major and minor versions.  One useful URL is
 #endif
 #ifdef HASATTRIBUTE_ALWAYS_INLINE
 /* always_inline is buggy in gcc <= 4.6 and causes compilation errors */
 #endif
 #ifdef HASATTRIBUTE_ALWAYS_INLINE
 /* always_inline is buggy in gcc <= 4.6 and causes compilation errors */
-#  if __GNUC__ == 4 && __GNUC_MINOR__ >= 7 || __GNUC__ > 4
+#  if !defined(PERL_IS_GCC) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7 || __GNUC__ > 4)
 #    define __attribute__always_inline__      __attribute__((always_inline))
 #  endif
 #endif
 #    define __attribute__always_inline__      __attribute__((always_inline))
 #  endif
 #endif