Treat the label for the first @llvm.dbg.stoppoint the same way as the dbg_func_start...
authorEvan Cheng <evan.cheng@apple.com>
Wed, 30 Jan 2008 20:08:35 +0000 (20:08 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Wed, 30 Jan 2008 20:08:35 +0000 (20:08 +0000)
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

lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
lib/Target/X86/X86RegisterInfo.cpp

index 1b53beddf7671a8e7c09e738c3cdbbb7584e8635..84cd0480375afd65287a8a84730cd5ec48d26f85 100644 (file)
@@ -716,16 +716,16 @@ void ScheduleDAG::EmitNode(SDNode *Node, unsigned InstanceNo,
       // 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);
index bca197311facf56ce47fde8ff6f72b0908eb9de5..2f8ee1dadd89f9307a8b09ea55d8e4c961f4fd24 100644 (file)
@@ -525,11 +525,15 @@ void X86RegisterInfo::emitPrologue(MachineFunction &MF) const {
           X86FI->getCalleeSavedFrameSize() +(-TailCallReturnAddrDelta));
   uint64_t NumBytes = StackSize - X86FI->getCalleeSavedFrameSize();
 
-  // Skip over the label which mark the beginning of the function.
-  if (MMI && MMI->needsFrameInfo() &&
-      MBBI != MBB.end() &&
-      MBBI->getOpcode() == X86::LABEL)
+  // Skip over the labels which mark the beginning of the function.
+  if (MMI && MMI->needsFrameInfo()) {
+    unsigned NumLabels = 0;
+    while (NumLabels <= 1 &&
+           MBBI != MBB.end() && MBBI->getOpcode() == X86::LABEL) {
+      ++NumLabels;
       ++MBBI;
+    }
+  }
 
   // Insert stack pointer adjustment for later moving of return addr.  Only
   // applies to tail call optimized functions where the callee argument stack