[llvm] r193042 - Emit prefix data after debug and EH directives.
Peter Collingbourne
peter at pcc.me.uk
Sat Oct 19 19:16:22 PDT 2013
Author: pcc
Date: Sat Oct 19 21:16:21 2013
New Revision: 193042
URL: http://llvm.org/viewvc/llvm-project?rev=193042&view=rev
Log:
Emit prefix data after debug and EH directives.
This ensures that the prefix data is treated as part of the function for
the purpose of debug info. This provides a better debugging experience,
among other things by allowing a debug info client to correctly look up
a function in debug info given a function pointer.
Modified:
llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
llvm/trunk/test/CodeGen/X86/prefixdata.ll
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=193042&r1=193041&r2=193042&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Sat Oct 19 21:16:21 2013
@@ -462,10 +462,6 @@ void AsmPrinter::EmitFunctionHeader() {
OutStreamer.EmitLabel(DeadBlockSyms[i]);
}
- // Emit the prefix data.
- if (F->hasPrefixData())
- EmitGlobalConstant(F->getPrefixData());
-
// Emit pre-function debug and/or EH information.
if (DE) {
NamedRegionTimer T(EHTimerName, DWARFGroupName, TimePassesIsEnabled);
@@ -475,6 +471,10 @@ void AsmPrinter::EmitFunctionHeader() {
NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled);
DD->beginFunction(MF);
}
+
+ // Emit the prefix data.
+ if (F->hasPrefixData())
+ EmitGlobalConstant(F->getPrefixData());
}
/// EmitFunctionEntryLabel - Emit the label that is the entrypoint for the
Modified: llvm/trunk/test/CodeGen/X86/prefixdata.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/prefixdata.ll?rev=193042&r1=193041&r2=193042&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/prefixdata.ll (original)
+++ llvm/trunk/test/CodeGen/X86/prefixdata.ll Sat Oct 19 21:16:21 2013
@@ -3,12 +3,14 @@
@i = linkonce_odr global i32 1
; CHECK: f:
+; CHECK-NEXT: .cfi_startproc
; CHECK-NEXT: .long 1
define void @f() prefix i32 1 {
ret void
}
; CHECK: g:
+; CHECK-NEXT: .cfi_startproc
; CHECK-NEXT: .quad i
define void @g() prefix i32* @i {
ret void
More information about the llvm-commits
mailing list