Make llvm_unreachable evaluate to __builtin_unreachable() in -Asserts

builds, which was the apparent consensus of PR8973 and llvmdev.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127608 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
John McCall 2011-03-14 20:01:21 +00:00
parent 766faf4b2b
commit 2f9a9ed785
2 changed files with 16 additions and 1 deletions

View File

@ -126,4 +126,19 @@
decl
#endif
// LLVM_BUILTIN_UNREACHABLE - On compilers which support it, expands
// to an expression which states that it is undefined behavior for the
// compiler to reach this point.
#if defined(__clang__) || (__GNUC__ > 4) \
|| (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
# define LLVM_BUILTIN_UNREACHABLE __builtin_unreachable()
#else
#ifdef __cplusplus
extern "C" LLVM_ATTRIBUTE_NORETURN void abort();
#else
extern LLVM_ATTRIBUTE_NORETURN void abort();
#endif
# define LLVM_BUILTIN_UNREACHABLE abort()
#endif
#endif

View File

@ -97,7 +97,7 @@ namespace llvm {
#define llvm_unreachable(msg) \
::llvm::llvm_unreachable_internal(msg, __FILE__, __LINE__)
#else
#define llvm_unreachable(msg) ::llvm::llvm_unreachable_internal()
#define llvm_unreachable(msg) LLVM_BUILTIN_UNREACHABLE
#endif
#endif