diff --git a/tools/lto/lto.cpp b/tools/lto/lto.cpp
index 99024589f19..963c67ee7d9 100644
--- a/tools/lto/lto.cpp
+++ b/tools/lto/lto.cpp
@@ -31,6 +31,7 @@
 #include "llvm/Analysis/Verifier.h"
 #include "llvm/CodeGen/FileWriters.h"
 #include "llvm/Target/SubtargetFeature.h"
+#include "llvm/Target/TargetOptions.h"
 #include "llvm/Target/TargetData.h"
 #include "llvm/Target/TargetMachine.h"
 #include "llvm/Target/TargetMachineRegistry.h"
@@ -266,7 +267,11 @@ LTO::optimize(Module *M, std::ostream &Out,
 
   if (!Target)
     return LTO_NO_TARGET;
-  
+
+  // If target supports exception handling then enable it now.
+  if (Target->getTargetAsmInfo()->doesSupportExceptionHandling())
+    ExceptionHandling = true;
+
   // Start off with a verification pass.
   Passes.add(createVerifierPass());