Make sure that debug labels are defined within the same section and after the
entry point of a function.
llvm-svn: 27494
diff --git a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
index 7645a87..b34bf9a 100644
--- a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
+++ b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
@@ -511,9 +511,6 @@
SetupMachineFunction(MF);
O << "\n\n";
- // Emit pre-function debug information.
- DW.BeginFunction(&MF);
-
// Print out constants referenced by the function
EmitConstantPool(MF.getConstantPool());
@@ -539,6 +536,9 @@
EmitAlignment(4, F);
O << CurrentFnName << ":\n";
+ // Emit pre-function debug information.
+ DW.BeginFunction(&MF);
+
// Print out code for the function.
for (MachineFunction::const_iterator I = MF.begin(), E = MF.end();
I != E; ++I) {
diff --git a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
index 5b576b7..5a3490a 100755
--- a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
+++ b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
@@ -35,11 +35,6 @@
SetupMachineFunction(MF);
O << "\n\n";
- if (forDarwin) {
- // Emit pre-function debug information.
- DW.BeginFunction(&MF);
- }
-
// Print out constants referenced by the function
EmitConstantPool(MF.getConstantPool());
@@ -73,6 +68,11 @@
}
O << CurrentFnName << ":\n";
+ if (forDarwin) {
+ // Emit pre-function debug information.
+ DW.BeginFunction(&MF);
+ }
+
// Print out code for the function.
for (MachineFunction::const_iterator I = MF.begin(), E = MF.end();
I != E; ++I) {
diff --git a/llvm/lib/Target/X86/X86IntelAsmPrinter.cpp b/llvm/lib/Target/X86/X86IntelAsmPrinter.cpp
index c49f892..718a95b 100755
--- a/llvm/lib/Target/X86/X86IntelAsmPrinter.cpp
+++ b/llvm/lib/Target/X86/X86IntelAsmPrinter.cpp
@@ -34,11 +34,6 @@
SetupMachineFunction(MF);
O << "\n\n";
- if (forDarwin) {
- // Emit pre-function debug information.
- DW.BeginFunction(&MF);
- }
-
// Print out constants referenced by the function
EmitConstantPool(MF.getConstantPool());
@@ -49,6 +44,11 @@
if (HasDotTypeDotSizeDirective)
O << "\t.type\t" << CurrentFnName << ", @function\n";
O << CurrentFnName << ":\n";
+
+ if (forDarwin) {
+ // Emit pre-function debug information.
+ DW.BeginFunction(&MF);
+ }
// Print out code for the function.
for (MachineFunction::const_iterator I = MF.begin(), E = MF.end();