From: Paul Eggert Date: Fri, 13 Jan 2023 22:32:11 +0000 (-0800) Subject: verify: work around xlclang 16.1 compiler bug X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=2351bda972ee98d85cfb3a68a1b8520d787eacac;p=gnulib.git verify: work around xlclang 16.1 compiler bug Problem reported by Bruno Haible in: https://lists.gnu.org/r/grep-devel/2023-01/msg00003.html * lib/verify.h (_GL_HAS_BUILTIN_TRAP, _GL_HAS_BUILTIN_UNREACHABLE): Define to 0 if compiler advertises itself as clang before version 5. xlclang 16.1 advertises itself as 4.0.1 and this patch works around what appears to be a compiler bug when compiling dfa.c in bleeding-edge grep. --- diff --git a/ChangeLog b/ChangeLog index 4ad7ed97d6..05c0d3db0b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2023-01-13 Paul Eggert + + verify: work around xlclang 16.1 compiler bug + Problem reported by Bruno Haible in: + https://lists.gnu.org/r/grep-devel/2023-01/msg00003.html + * lib/verify.h (_GL_HAS_BUILTIN_TRAP, _GL_HAS_BUILTIN_UNREACHABLE): + Define to 0 if compiler advertises itself as clang before version 5. + xlclang 16.1 advertises itself as 4.0.1 and this patch works + around what appears to be a compiler bug when compiling dfa.c in + bleeding-edge grep. + 2023-01-13 Paul Eggert assert-h: fix configure comment-out diff --git a/lib/verify.h b/lib/verify.h index 17d6e78c81..b63cb26432 100644 --- a/lib/verify.h +++ b/lib/verify.h @@ -258,7 +258,9 @@ template /* @assert.h omit start@ */ -#if 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__)) +#if defined __clang_major__ && __clang_major__ < 5 +# define _GL_HAS_BUILTIN_TRAP 0 +#elif 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__)) # define _GL_HAS_BUILTIN_TRAP 1 #elif defined __has_builtin # define _GL_HAS_BUILTIN_TRAP __has_builtin (__builtin_trap) @@ -266,7 +268,9 @@ template # define _GL_HAS_BUILTIN_TRAP 0 #endif -#if 4 < __GNUC__ + (5 <= __GNUC_MINOR__) +#if defined __clang_major__ && __clang_major__ < 5 +# define _GL_HAS_BUILTIN_UNREACHABLE 0 +#elif 4 < __GNUC__ + (5 <= __GNUC_MINOR__) # define _GL_HAS_BUILTIN_UNREACHABLE 1 #elif defined __has_builtin # define _GL_HAS_BUILTIN_UNREACHABLE __has_builtin (__builtin_unreachable)