Feature #1540 » 0032-gnulib-common.m4-Update-to-serial-113.patch
| dependencies/m4/gnulib-common.m4 | ||
|---|---|---|
| # gnulib-common.m4 | ||
| # serial 110 | ||
| # serial 113 | ||
| dnl Copyright (C) 2007-2025 Free Software Foundation, Inc. | ||
| dnl This file is free software; the Free Software Foundation | ||
| dnl gives unlimited permission to copy and/or distribute it, | ||
| ... | ... | |
| #endif | ||
| ]) | ||
|   AH_VERBATIM([_Noreturn], | ||
| [/* The _Noreturn keyword of C11.  */ | ||
| [/* The _Noreturn keyword of C11. | ||
|    Do not use [[noreturn]], because with it the syntax | ||
|      extern _Noreturn void func (...); | ||
|    would not be valid; such a declaration would be valid only with 'extern' | ||
|    and '_Noreturn' swapped, or without the 'extern' keyword.  However, some | ||
|    AIX system header files and several gnulib header files use precisely | ||
|    this syntax with 'extern'.  So even though C23 deprecates _Noreturn, | ||
|    it is currently more portable to prefer it to [[noreturn]]. | ||
|    Also, do not try to work around LLVM bug 59792 (clang 15 or earlier). | ||
|    This rare bug can be worked around by compiling with 'clang -D_Noreturn=', | ||
|    though the workaround may generate many false-alarm warnings.  */ | ||
| #ifndef _Noreturn | ||
| # if (defined __cplusplus \ | ||
|       && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ | ||
|           || (defined _MSC_VER && 1900 <= _MSC_VER)) \ | ||
|       && 0) | ||
|     /* [[noreturn]] is not practically usable, because with it the syntax | ||
|          extern _Noreturn void func (...); | ||
|        would not be valid; such a declaration would only be valid with 'extern' | ||
|        and '_Noreturn' swapped, or without the 'extern' keyword.  However, some | ||
|        AIX system header files and several gnulib header files use precisely | ||
|        this syntax with 'extern'.  */ | ||
| #  define _Noreturn [[noreturn]] | ||
| # elif (defined __clang__ && __clang_major__ < 16 \ | ||
|         && defined _GL_WORK_AROUND_LLVM_BUG_59792) | ||
|    /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around | ||
|       that rare LLVM bug, though you may get many false-alarm warnings.  */ | ||
| #  define _Noreturn | ||
| # elif ((!defined __cplusplus || defined __clang__) \ | ||
|         && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ | ||
|             || (!defined __STRICT_ANSI__ \ | ||
|                 && (_GL_GNUC_PREREQ (4, 7) \ | ||
|                     || (defined __apple_build_version__ \ | ||
|                         ? 6000000 <= __apple_build_version__ \ | ||
|                         : 3 < __clang_major__ + (5 <= __clang_minor__)))))) | ||
| # if ((!defined __cplusplus || defined __clang__) \ | ||
|       && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0))) | ||
|    /* _Noreturn works as-is.  */ | ||
| # elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C | ||
|    /* Prefer __attribute__ ((__noreturn__)) to plain _Noreturn even if the | ||
|       latter works, as 'gcc -std=gnu99 -Wpedantic' warns about _Noreturn.  */ | ||
| #  define _Noreturn __attribute__ ((__noreturn__)) | ||
| # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) | ||
| #  define _Noreturn __declspec (noreturn) | ||
| ... | ... | |
|      -1 if n1 < n2 | ||
|    The naïve code   (n1 > n2 ? 1 : n1 < n2 ? -1 : 0)  produces a conditional | ||
|    jump with nearly all GCC versions up to GCC 10. | ||
|    This variant     (n1 < n2 ? -1 : n1 > n2)  produces a conditional with many | ||
|    GCC versions up to GCC 9. | ||
|    This variant     (n1 < n2 ? -1 : n1 > n2)  produces a conditional jump with | ||
|    many GCC versions up to GCC 9. | ||
|    The better code  (n1 > n2) - (n1 < n2)  from Hacker's Delight § 2-9 | ||
|    avoids conditional jumps in all GCC versions >= 3.4.  */ | ||
| #define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) | ||
- « Previous
- 1
- 2
- Next »