mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
Add an LLVM_BUILTIN_DEBUGTRAP macro.
Summary: This provides a macro that expands to __builtin_debugtrap() for clang, and __debugbreak() for MSVC. It intentionally expands to nothing for compilers that do not support a similar mechanism that halts the debugger without otherwise crashing the process. Differential Revision: http://reviews.llvm.org/D18002 llvm-svn: 263095
This commit is contained in:
parent
26a5894f0f
commit
6bac742f98
@ -274,6 +274,23 @@
|
|||||||
# define LLVM_BUILTIN_TRAP *(volatile int*)0x11 = 0
|
# define LLVM_BUILTIN_TRAP *(volatile int*)0x11 = 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/// LLVM_BUILTIN_DEBUGTRAP - On compilers which support it, expands to
|
||||||
|
/// an expression which causes the program to break while running
|
||||||
|
/// under a debugger.
|
||||||
|
#if __has_builtin(__builtin_debugtrap)
|
||||||
|
# define LLVM_BUILTIN_DEBUGTRAP __builtin_debugtrap()
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
// The __debugbreak intrinsic is supported by MSVC and breaks while
|
||||||
|
// running under the debugger, and also supports invoking a debugger
|
||||||
|
// when the OS is configured appropriately.
|
||||||
|
# define LLVM_BUILTIN_DEBUGTRAP __debugbreak()
|
||||||
|
#else
|
||||||
|
// Just continue execution when built with compilers that have no
|
||||||
|
// support. This is a debugging aid and not intended to force the
|
||||||
|
// program to abort if encountered.
|
||||||
|
# define LLVM_BUILTIN_DEBUGTRAP
|
||||||
|
#endif
|
||||||
|
|
||||||
/// \macro LLVM_ASSUME_ALIGNED
|
/// \macro LLVM_ASSUME_ALIGNED
|
||||||
/// \brief Returns a pointer with an assumed alignment.
|
/// \brief Returns a pointer with an assumed alignment.
|
||||||
#if __has_builtin(__builtin_assume_aligned) || LLVM_GNUC_PREREQ(4, 7, 0)
|
#if __has_builtin(__builtin_assume_aligned) || LLVM_GNUC_PREREQ(4, 7, 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user