Treat the label for the first @llvm.dbg.stoppoint the same way as the dbg_func_start label. Make sure nothing else is inserted before them.
Note this solution might be somewhat fragile since ISD::LABEL may be used for other
purposes. If that ends up to be an issue, we may need to introduce a different node
for debug labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46571 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
index 1b53bed..84cd048 100644
--- a/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
@@ -716,16 +716,16 @@
       // If we are inserting a LABEL and this happens to be the first label in
       // the entry block, it is the "function start" label. Make sure there are
       // no other instructions before it.
-      bool SeenLabel = false;
+      unsigned NumLabels = 0;
       MachineBasicBlock::iterator MBBI = BB->begin();
       while (MBBI != BB->end()) {
         if (MBBI->getOpcode() == TargetInstrInfo::LABEL) {
-          SeenLabel = true;
-          break;
+          if (++NumLabels > 1)
+            break;
         }
         ++MBBI;
       }
-      if (!SeenLabel)
+      if (NumLabels <= 1)
         BB->insert(BB->begin(), MI);
       else
         BB->push_back(MI);