Browse Source

Merge pull request #2156 from svaarala/gcc-noreturn-workaround

Disable noreturn attributes for GCC 5+
pull/2157/head
Sami Vaarala 5 years ago
committed by GitHub
parent
commit
4ed391defb
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      RELEASES.rst
  2. 10
      config/compilers/compiler_gcc.h.in

6
RELEASES.rst

@ -3532,6 +3532,12 @@ Planned
* Use GCC (>= 5.0) and Clang builtin bswap macros, add internal DUK_BSWAP64() * Use GCC (>= 5.0) and Clang builtin bswap macros, add internal DUK_BSWAP64()
macro (GH-2122) macro (GH-2122)
* Short term workaround for a noreturn-related issue with GCC 5+ (GH-2155)
where some internal duk_require_constructor_call() calls are entirely
missing in compiler output in certain circumstances (GCC 5+, noreturn
attributes enabled, debugger support enabled); the workaround is to
disable noreturn macros for GCC 5+ for now (GH-2156)
* Improve assertion coverage for internal structures during mark-and-sweep * Improve assertion coverage for internal structures during mark-and-sweep
(GH-2092) (GH-2092)

10
config/compilers/compiler_gcc.h.in

@ -6,13 +6,17 @@
#define DUK_VA_COPY(dest,src) __va_copy(dest,src) #define DUK_VA_COPY(dest,src) __va_copy(dest,src)
#endif #endif
#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 20500L) #if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 20500L) && (DUK_F_GCC_VERSION < 50000L)
/* since gcc-2.5 */ /* Since gcc-2.5.
*
* Disabled temporarily in GCC 5+ because of an unresolved noreturn-related
* issue: https://github.com/svaarala/duktape/issues/2155.
*/
#define DUK_NORETURN(decl) decl __attribute__((noreturn)) #define DUK_NORETURN(decl) decl __attribute__((noreturn))
#endif #endif
#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 40500L) #if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 40500L)
/* since gcc-4.5 */ /* Since gcc-4.5. */
#define DUK_UNREACHABLE() do { __builtin_unreachable(); } while (0) #define DUK_UNREACHABLE() do { __builtin_unreachable(); } while (0)
#endif #endif

Loading…
Cancel
Save