mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
Re-committing r228628 with a fix for 64-bit builds.
On Windows, we now use RaiseException to generate the kind of trap we require (one which calls our vectored exception handler), and fall back to using a volatile write to simulate a trap elsewhere. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228691 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
85cbc8073b
commit
8be1058946
@ -287,6 +287,19 @@
|
||||
/// which causes the program to exit abnormally.
|
||||
#if __has_builtin(__builtin_trap) || LLVM_GNUC_PREREQ(4, 3, 0)
|
||||
# define LLVM_BUILTIN_TRAP __builtin_trap()
|
||||
#elif defined(LLVM_ON_WIN32)
|
||||
#if defined(_WIN64)
|
||||
extern "C" __declspec(dllimport) void __stdcall RaiseException(
|
||||
unsigned long, unsigned long, unsigned long, const unsigned long long *);
|
||||
#else
|
||||
extern "C" __declspec(dllimport) void __stdcall RaiseException(
|
||||
unsigned long, unsigned long, unsigned long, const unsigned long *);
|
||||
#endif
|
||||
# define LLVM_BUILTIN_TRAP \
|
||||
do { \
|
||||
::RaiseException(0xDEADD0D0, 0x1 /*EXCEPTION_NONCONTINUABLE*/, 0, nullptr);\
|
||||
__assume(false); \
|
||||
} while (0)
|
||||
#else
|
||||
# define LLVM_BUILTIN_TRAP *(volatile int*)0x11 = 0
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user