- Use the "Fast" flag instead of "OptimizeForSize" to determine whether to emit
  a DBG_LABEL or not. We want to fall back to the original way of emitting debug
  info when we're in -O0/-fast mode.
- Add plumbing in to pass the "Fast" flag to places that need it.
- XFAIL DebugInfo/deaddebuglabel.ll. This is finding 11 labels instead of 8. I
  need to investigate still.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65367 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
index 4c73729..bc41713 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
@@ -3915,6 +3915,7 @@
       if (Fast)
         DAG.setRoot(DAG.getLabel(ISD::DBG_LABEL, getCurDebugLoc(),
                                  getRoot(), LabelID));
+      DW->setFastCodeGen(Fast);
     }
 
     return 0;
@@ -3950,9 +3951,7 @@
       // create a label if this is a beginning of inlined function.
       unsigned Line = Subprogram.getLineNumber();
 
-      // FIXME: Support more than just -Os.
-      const Function *F = I.getParent()->getParent();
-      if (!F->hasFnAttr(Attribute::OptimizeForSize)) {
+      if (Fast) {
         unsigned LabelID = DW->RecordSourceLine(Line, 0, SrcFile);
         if (DW->getRecordSourceLineCount() != 1)
           DAG.setRoot(DAG.getLabel(ISD::DBG_LABEL, getCurDebugLoc(),
@@ -3966,8 +3965,7 @@
     return 0;
   }
   case Intrinsic::dbg_declare: {
-    const Function *F = I.getParent()->getParent();
-    if (!F->hasFnAttr(Attribute::OptimizeForSize)) {
+    if (Fast) {
       DwarfWriter *DW = DAG.getDwarfWriter();
       DbgDeclareInst &DI = cast<DbgDeclareInst>(I);
       Value *Variable = DI.getVariable();