Implement new llc flag -disable-required-unwind-tables.
Corresponds to -fno-unwind-tables (usually default in gcc).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49361 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/DwarfWriter.cpp b/lib/CodeGen/DwarfWriter.cpp
index 947b420..6cdc91e 100644
--- a/lib/CodeGen/DwarfWriter.cpp
+++ b/lib/CodeGen/DwarfWriter.cpp
@@ -2905,8 +2905,11 @@
 
     // If there are no calls then you can't unwind.  This may mean we can
     // omit the EH Frame, but some environments do not handle weak absolute
-    // symbols.
+    // symbols.  
+    // If UnwindTablesOptional is not set we cannot do this optimization; the
+    // unwind info is to be available for non-EH uses.
     if (!EHFrameInfo.hasCalls &&
+        UnwindTablesOptional &&
         ((linkage != Function::WeakLinkage && 
           linkage != Function::LinkOnceLinkage) ||
          !TAI->getWeakDefDirective() ||
@@ -3427,7 +3430,9 @@
         shouldEmitTable = true;
 
       // See if we need frame move info.
-      if (MMI->hasDebugInfo() || !MF->getFunction()->doesNotThrow())
+      if (MMI->hasDebugInfo() || 
+          !MF->getFunction()->doesNotThrow() ||
+          !UnwindTablesOptional)
         shouldEmitMoves = true;
 
       if (shouldEmitMoves || shouldEmitTable)