aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2008-01-30 20:08:35 +0000
committerEvan Cheng <evan.cheng@apple.com>2008-01-30 20:08:35 +0000
commita726585ca660c8766a9bd860476eb2ef8c019142 (patch)
tree00af25d1449afc00d0c1858e7bcf9510b301bfa7
parentc59be5582149d604456c15a757cebe46d481cbbd (diff)
downloadexternal_llvm-a726585ca660c8766a9bd860476eb2ef8c019142.zip
external_llvm-a726585ca660c8766a9bd860476eb2ef8c019142.tar.gz
external_llvm-a726585ca660c8766a9bd860476eb2ef8c019142.tar.bz2
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
-rw-r--r--lib/CodeGen/SelectionDAG/ScheduleDAG.cpp8
-rw-r--r--lib/Target/X86/X86RegisterInfo.cpp12
2 files changed, 12 insertions, 8 deletions
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 @@ 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);
diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp
index bca1973..2f8ee1d 100644
--- a/lib/Target/X86/X86RegisterInfo.cpp
+++ b/lib/Target/X86/X86RegisterInfo.cpp
@@ -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