Flag to control exception handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33628 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/Target/TargetOptions.h b/include/llvm/Target/TargetOptions.h
index 6bfe005..fcf2aa1 100644
--- a/include/llvm/Target/TargetOptions.h
+++ b/include/llvm/Target/TargetOptions.h
@@ -59,6 +59,11 @@
   /// .bss section. This flag disables such behaviour (necessary, e.g. for
   /// crt*.o compiling).
   extern bool NoZerosInBSS;
+  
+  /// ExceptionHandling - This flag indicates that exception information should
+  /// be emitted.
+  extern bool ExceptionHandling;
+  
 } // End llvm namespace
 
 #endif
diff --git a/lib/CodeGen/DwarfWriter.cpp b/lib/CodeGen/DwarfWriter.cpp
index 62d9f7c..2b9cf74 100644
--- a/lib/CodeGen/DwarfWriter.cpp
+++ b/lib/CodeGen/DwarfWriter.cpp
@@ -29,8 +29,9 @@
 #include "llvm/Target/TargetAsmInfo.h"
 #include "llvm/Target/MRegisterInfo.h"
 #include "llvm/Target/TargetData.h"
-#include "llvm/Target/TargetMachine.h"
 #include "llvm/Target/TargetFrameInfo.h"
+#include "llvm/Target/TargetMachine.h"
+#include "llvm/Target/TargetOptions.h"
 #include <ostream>
 #include <string>
 using namespace llvm;
@@ -2675,7 +2676,7 @@
   /// manager has created it.  Set by the target AsmPrinter.
   void SetModuleInfo(MachineModuleInfo *mmi) {
     // Make sure initial declarations are made.
-    if (!MMI && TAI->getSupportsExceptionHandling()) {
+    if (!MMI && ExceptionHandling && TAI->getSupportsExceptionHandling()) {
       MMI = mmi;
       shouldEmit = true;
     }
diff --git a/lib/Target/TargetMachine.cpp b/lib/Target/TargetMachine.cpp
index f6b3fd0..8428653 100644
--- a/lib/Target/TargetMachine.cpp
+++ b/lib/Target/TargetMachine.cpp
@@ -29,6 +29,7 @@
   bool FiniteOnlyFPMathOption;
   bool UseSoftFloat;
   bool NoZerosInBSS;
+  bool ExceptionHandling;
   Reloc::Model RelocationModel;
   CodeModel::Model CMModel;
 }
@@ -67,6 +68,11 @@
                cl::desc("Don't place zero-initialized symbols into bss section"),
                cl::location(NoZerosInBSS),
                cl::init(false));
+  cl::opt<bool, true>
+  EnableExceptionHandling("exception-handling",
+               cl::desc("Exception handling should be emitted."),
+               cl::location(ExceptionHandling),
+               cl::init(false));
 
   cl::opt<llvm::Reloc::Model, true>
   DefRelocationModel(