Darwin doesn't need exception handling information for the "move" info when
debug information is being output, because it's leet!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52994 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/Target/TargetAsmInfo.h b/include/llvm/Target/TargetAsmInfo.h
index 2fb2a68..aada8ff 100644
--- a/include/llvm/Target/TargetAsmInfo.h
+++ b/include/llvm/Target/TargetAsmInfo.h
@@ -412,7 +412,11 @@
     /// DwarfExceptionSection - Section directive for Exception table.
     ///
     const char *DwarfExceptionSection; // Defaults to ".gcc_except_table".
-     
+
+    /// DebugInfoRequireFrameMoveInfo - Does debugging info require frame move
+    /// info.
+    ///
+    bool DebugInfoRequireFrameMoveInfo; // Defaults to "true"
 
     //===--- CBE Asm Translation Table -----------------------------------===//
 
@@ -699,6 +703,9 @@
     const char *getDwarfExceptionSection() const {
       return DwarfExceptionSection;
     }
+    bool doesDebugInfoRequireFrameMoveInfo() const {
+      return DebugInfoRequireFrameMoveInfo;
+    }
     const char *const *getAsmCBE() const {
       return AsmTransCBE;
     }
diff --git a/lib/CodeGen/DwarfWriter.cpp b/lib/CodeGen/DwarfWriter.cpp
index 68ec6c4..569702c 100644
--- a/lib/CodeGen/DwarfWriter.cpp
+++ b/lib/CodeGen/DwarfWriter.cpp
@@ -827,7 +827,7 @@
   ///
   AsmPrinter *Asm;
   
-  /// TAI - Target Asm Printer.
+  /// TAI - Target asm information.
   const TargetAsmInfo *TAI;
   
   /// TD - Target data.
@@ -3511,7 +3511,7 @@
         shouldEmitTable = true;
 
       // See if we need frame move info.
-      if (MMI->hasDebugInfo() || 
+      if ((MMI->hasDebugInfo() && TAI->doesDebugInfoRequireFrameMoveInfo()) || 
           !MF->getFunction()->doesNotThrow() ||
           UnwindTablesMandatory)
         shouldEmitMoves = true;
diff --git a/lib/Target/PowerPC/PPCTargetAsmInfo.cpp b/lib/Target/PowerPC/PPCTargetAsmInfo.cpp
index 058de65..00e1aab 100644
--- a/lib/Target/PowerPC/PPCTargetAsmInfo.cpp
+++ b/lib/Target/PowerPC/PPCTargetAsmInfo.cpp
@@ -66,6 +66,7 @@
   DwarfEHFrameSection =
   ".section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support";
   DwarfExceptionSection = ".section __DATA,__gcc_except_tab";
+  DebugInfoRequireFrameMoveInfo = false;
   GlobalEHDirective = "\t.globl\t";
   SupportsWeakOmittedEHFrame = false;
 
diff --git a/lib/Target/TargetAsmInfo.cpp b/lib/Target/TargetAsmInfo.cpp
index 2adad3d..8caff91 100644
--- a/lib/Target/TargetAsmInfo.cpp
+++ b/lib/Target/TargetAsmInfo.cpp
@@ -111,6 +111,7 @@
   DwarfMacInfoSection(".debug_macinfo"),
   DwarfEHFrameSection(".eh_frame"),
   DwarfExceptionSection(".gcc_except_table"),
+  DebugInfoRequireFrameMoveInfo(true),
   AsmTransCBE(0) {
 }
 
diff --git a/lib/Target/X86/X86TargetAsmInfo.cpp b/lib/Target/X86/X86TargetAsmInfo.cpp
index 887c13d..d0b3b81 100644
--- a/lib/Target/X86/X86TargetAsmInfo.cpp
+++ b/lib/Target/X86/X86TargetAsmInfo.cpp
@@ -124,6 +124,7 @@
     DwarfEHFrameSection =
     ".section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support";
     DwarfExceptionSection = ".section __DATA,__gcc_except_tab";
+    DebugInfoRequireFrameMoveInfo = false;
     break;
 
   case X86Subtarget::isELF: