Index: llvm/include/llvm/Support/Compiler.h =================================================================== --- llvm/include/llvm/Support/Compiler.h +++ llvm/include/llvm/Support/Compiler.h @@ -242,7 +242,14 @@ #define LLVM_ATTRIBUTE_ALWAYS_INLINE inline #endif -#ifdef __GNUC__ +// C++14 and up has [[noreturn]] +#if defined(__cplusplus) && __cplusplus > 201300 && \ + LLVM_HAS_CPP_ATTRIBUTE(noreturn) +#define LLVM_ATTRIBUTE_NORETURN [[noreturn]] +// C11 and up has _Noreturn +#elif !defined(__cplusplus) && __STDC_VERSION__ > 201112L +#define LLVM_ATTRIBUTE_NORETURN _Noreturn; +#elif defined(__GNUC__) || __has_attribute(noreturn) #define LLVM_ATTRIBUTE_NORETURN __attribute__((noreturn)) #elif defined(_MSC_VER) #define LLVM_ATTRIBUTE_NORETURN __declspec(noreturn)