summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2013-10-20 02:16:21 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2013-10-20 02:16:21 +0000
commit0abc36205a39f3791342165502478bb51fe67f05 (patch)
tree96ed17054b2b8ec9e2dfcb318c443ad24584cf3e
parente52fac1632dc43d0595e06baf5743608b173dfbc (diff)
downloadllvm-0abc36205a39f3791342165502478bb51fe67f05.tar.gz
llvm-0abc36205a39f3791342165502478bb51fe67f05.tar.bz2
llvm-0abc36205a39f3791342165502478bb51fe67f05.tar.xz
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193042 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinter.cpp8
-rw-r--r--test/CodeGen/X86/prefixdata.ll2
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 0fe341a243..969a8dfeae 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -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
diff --git a/test/CodeGen/X86/prefixdata.ll b/test/CodeGen/X86/prefixdata.ll
index 2ffa89d287..2ec1892dd1 100644
--- a/test/CodeGen/X86/prefixdata.ll
+++ b/test/CodeGen/X86/prefixdata.ll
@@ -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