diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2013-10-20 02:16:21 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2013-10-20 02:16:21 +0000 |
commit | 0abc36205a39f3791342165502478bb51fe67f05 (patch) | |
tree | 96ed17054b2b8ec9e2dfcb318c443ad24584cf3e | |
parent | e52fac1632dc43d0595e06baf5743608b173dfbc (diff) | |
download | llvm-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.cpp | 8 | ||||
-rw-r--r-- | test/CodeGen/X86/prefixdata.ll | 2 |
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 |