OSDN Git Service

Remove PrologEpilogInserter's usage of DBG_VALUE's offset field
authorAdrian Prantl <aprantl@apple.com>
Tue, 1 Aug 2017 21:45:24 +0000 (21:45 +0000)
committerAdrian Prantl <aprantl@apple.com>
Tue, 1 Aug 2017 21:45:24 +0000 (21:45 +0000)
commit2cd77a84868638c82bda5b620838e775dbf4997c
tree1688cd5a99ceff48379773b5ffc65f581a1502c5
parentfbbab58fac75730bdc72c5f3bcb0df3fb4a66f57
Remove PrologEpilogInserter's usage of DBG_VALUE's offset field

In the last half-dozen commits to LLVM I removed code that became dead
after removing the offset parameter from llvm.dbg.value gradually
proceeding from IR towards the backend. Before I can move on to
DwarfDebug and friends there is one last side-called offset I need to
remove:  This patch modifies PrologEpilogInserter's use of the
DBG_VALUE's offset argument to use a DIExpression instead. Because the
PrologEpilogInserter runs at the Machine level I had to play a little
trick with a named llvm.dbg.mir node to get the DIExpressions to print
in MIR dumps (which print the llvm::Module followed by the
MachineFunction dump).

I also had to add rudimentary DwarfExpression support to CodeView and
as a side-effect also fixed a bug (CodeViewDebug::collectVariableInfo
was supposed to give up on variables with complex DIExpressions, but
would fail to do so for fragments, which are also modeled as
DIExpressions).

With this last holdover removed we will have only one canonical way of
representing offsets to debug locations which will simplify the code
in DwarfDebug (and future versions of CodeViewDebug once it starts
handling more complex expressions) and make it easier to reason about.

This patch is NFC-ish: All test case changes are for assembler
comments and the binary output does not change.

rdar://problem/33580047
Differential Revision: https://reviews.llvm.org/D36125

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309751 91177308-0d34-0410-b5e6-96231b3b80d8
12 files changed:
include/llvm/CodeGen/MachineOperand.h
lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
lib/CodeGen/MachineModuleInfo.cpp
lib/CodeGen/PrologEpilogInserter.cpp
lib/IR/Verifier.cpp
test/CodeGen/ARM/debug-info-arg.ll
test/DebugInfo/ARM/PR16736.ll
test/DebugInfo/COFF/pieces.ll
test/DebugInfo/X86/bbjoin.ll
test/DebugInfo/X86/dbg-value-frame-index.ll
test/DebugInfo/X86/debug-loc-asan.ll
test/DebugInfo/X86/pieces-4.ll