mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 04:09:45 +00:00
Remove try/catch(...) from Win32/Signals.inc.
catch(...) is used in Win32/Signals.inc for catching Win32 structured exceptions, but according to [1], this is wrong. We can't simply change try/catch to __try/__finally, since this syntax is not supported by MinGW. We can use __try/__finally on MSVC and __try1/__except1 macros on MinGW [2], but I think that that solution obfuscates the code too much. The use of try/catch(...) in Signals.inc makes it impossible to link MinGW-compiled libSystem with llvm-gcc compiled executables. I propose that we just remove try/catch(...) from Signals.inc, since the meaning of the code won't change. [1] http://members.cox.net/doug_web/eh.htm [2] http://article.gmane.org/gmane.comp.compilers.llvm.cvs/81315 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117442 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d33b77bbb0
commit
11d03f690e
@ -11,11 +11,6 @@ LEVEL = ../..
|
||||
LIBRARYNAME = LLVMSystem
|
||||
BUILD_ARCHIVE = 1
|
||||
REQUIRES_RTTI = 1
|
||||
include $(LEVEL)/Makefile.config
|
||||
|
||||
ifeq ($(HOST_OS),MingW)
|
||||
REQUIRES_EH := 1
|
||||
endif
|
||||
|
||||
EXTRA_DIST = Unix Win32 README.txt
|
||||
|
||||
|
@ -208,8 +208,7 @@ void llvm::sys::RunInterruptHandlers() {
|
||||
}
|
||||
|
||||
static LONG WINAPI LLVMUnhandledExceptionFilter(LPEXCEPTION_POINTERS ep) {
|
||||
try {
|
||||
Cleanup();
|
||||
Cleanup();
|
||||
|
||||
#ifdef _WIN64
|
||||
// TODO: provide a x64 friendly version of the following
|
||||
@ -291,10 +290,6 @@ static LONG WINAPI LLVMUnhandledExceptionFilter(LPEXCEPTION_POINTERS ep) {
|
||||
|
||||
#endif
|
||||
|
||||
} catch (...) {
|
||||
assert(0 && "Crashed in LLVMUnhandledExceptionFilter");
|
||||
}
|
||||
|
||||
if (ExitOnUnhandledExceptions)
|
||||
_exit(-3);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user