OSDN Git Service

Run interrupt routines as part of report_fatal_error, since we are failing
authorDaniel Dunbar <daniel@zuster.org>
Sat, 8 May 2010 02:10:36 +0000 (02:10 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Sat, 8 May 2010 02:10:36 +0000 (02:10 +0000)
ungracefully.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103334 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/ErrorHandling.cpp

index 56a171c..7e7ca9d 100644 (file)
@@ -16,6 +16,7 @@
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/raw_ostream.h"
+#include "llvm/System/Signals.h"
 #include "llvm/System/Threading.h"
 #include <cassert>
 #include <cstdlib>
@@ -52,6 +53,12 @@ void llvm::report_fatal_error(const Twine &reason) {
   } else {
     ErrorHandler(ErrorHandlerUserData, reason.str());
   }
+
+  // If we reached here, we are failing ungracefully. Run the interrupt handlers
+  // to make sure any special cleanups get done, in particular that we remove
+  // files registered with RemoveFileOnSignal.
+  sys::RunInterruptHandlers();
+
   exit(1);
 }