hanchenye-llvm-project/llvm
Alexey Samsonov dfcaf9c8d8 Rewrite calculateDbgValueHistory to make it (hopefully) more transparent.
This change preserves the original algorithm of generating history
for user variables, but makes it more clear.

High-level description of algorithm:
Scan all the machine basic blocks and machine instructions in the order
they are emitted to the object file. Do the following:
1) If we see a DBG_VALUE instruction, add it to the history of the
corresponding user variable. Keep track of all user variables, whose
locations are described by a register.
2) If we see a regular instruction, look at all the registers it clobbers,
and terminate the location range for all variables described by these registers.
3) At the end of the basic block, terminate location ranges for all
user variables described by some register.

Although this change shouldn't be user-visible (the contents of .debug_loc section
should be the same), it changes some internal assumptions about the set
of instructions used to track the variable locations. Watching the bots.

llvm-svn: 209225
2014-05-20 18:34:54 +00:00
..
autoconf
bindings [OCaml] Add an ocamlfind package llvm.all_backends. 2014-05-01 21:00:52 +00:00
cmake cmake: Remove -D NDEBUG from CFLAGS as well as CXXFLAGS 2014-05-19 21:13:41 +00:00
docs Clean up language and grammar. 2014-05-20 17:11:11 +00:00
examples
include Avoids DCE on write_register 2014-05-20 17:40:03 +00:00
lib Rewrite calculateDbgValueHistory to make it (hopefully) more transparent. 2014-05-20 18:34:54 +00:00
projects
test PR19767: DebugInfo emission of pointer constants. 2014-05-20 18:21:51 +00:00
tools [Mips] Add more relocation types and MIPS specific e_flags constants. 2014-05-20 09:27:49 +00:00
unittests Use std::unique_ptr instead of OwningPtr in the MemoryBuffer unittests. 2014-05-18 21:01:46 +00:00
utils Clean up language and grammar. 2014-05-20 17:11:11 +00:00
.arcconfig
.clang-format
.gitignore
CMakeLists.txt [CMake] Add build rules for llvm-PerfectShuffle utility 2014-05-07 16:54:00 +00:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules autoconf: Fix libLLVM-Major-Minor-Patch.so symlink 2014-05-15 19:50:25 +00:00
README.txt
configure
llvm.spec.in

README.txt

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

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, 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're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.