llvm-project/llvm
Adrian Prantl 032d2381bf 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

llvm-svn: 309751
2017-08-01 21:45:24 +00:00
..
bindings Update the Go bindings for r309426 (remove offset from llvm.dbg.value) 2017-07-28 22:44:44 +00:00
cmake [OCaml] Pass -D/-UNDEBUG through to ocamlc 2017-07-29 08:10:24 +00:00
docs [llvm-cov] Allow specifying distinct architectures for each loaded binary 2017-08-01 21:23:26 +00:00
examples Defeat another -Wunused-but-set-variable warning 2017-07-19 15:06:31 +00:00
include Remove PrologEpilogInserter's usage of DBG_VALUE's offset field 2017-08-01 21:45:24 +00:00
lib Remove PrologEpilogInserter's usage of DBG_VALUE's offset field 2017-08-01 21:45:24 +00:00
projects
resources
runtimes [CMake] Remove redundant logic in runtimes/CMakeList.txt 2017-07-24 17:26:28 +00:00
test Remove PrologEpilogInserter's usage of DBG_VALUE's offset field 2017-08-01 21:45:24 +00:00
tools [llvm-cov] Allow specifying distinct architectures for each loaded binary 2017-08-01 21:23:26 +00:00
unittests [PostDom] document the current handling of infinite loops and unreachables 2017-08-01 14:40:55 +00:00
utils [lit] Avoid copying llvm/utils/lit/tests/Inputs with lit site configs 2017-07-31 18:45:44 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt [lit] Avoid copying llvm/utils/lit/tests/Inputs with lit site configs 2017-07-31 18:45:44 +00:00
CODE_OWNERS.TXT Remove the BBVectorize pass. 2017-06-30 07:09:08 +00:00
CREDITS.TXT Another test commit 2017-07-01 03:24:06 +00:00
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT [RelTest] Diana is doing both releases now 2017-07-14 08:33:52 +00:00
configure
llvm.spec.in

README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.