Go to file
Alexey Samsonov 8000e2734e Generate better location ranges for some register-described variables.
Don't terminate location ranges for register-described variables
at the end of machine basic block if this register is never modified
in the function body, except for the prologue and epilogue. Prologue
location is guessed by FrameSetup flags on MachineInstructions, while
epilogue location is deduced from debug locations of instructions
in the basic blocks ending with return instructions.

This patch is mostly targeted to fix non-trivial debug locations for
variables addressed via stack and frame pointers.

It is not really a generic fix. We can still produce poor debug info
for register-described variables if this register *is* modified somewhere
in the function, but in unrelated places. This might be the case for the debug
info in optimized binaries (e.g. for local variables in inlined functions).
LiveDebugVariables pass in CodeGen attempts to fix this problem by adjusting
DBG_VALUE instructions, but this pass is tied to greedy register allocator,
which is used in optimized builds only. Proper fix would likely involve
generalizing LiveDebugVariables to all register allocators. See more discussion
in http://reviews.llvm.org/D3933 review thread.

I'm proceeding with this patch to fix immediate severe problems and
important cases, e.g. fix completely broken debug info with AddressSanitizer
and fix PR19307 (missing debug info for by-value std::string arguments).

llvm-svn: 210492
2014-06-09 21:53:47 +00:00
clang Objective-C. Consider block pointer as NSObject as well as conforming to 2014-06-09 21:42:01 +00:00
clang-tools-extra [C++11] Use 'nullptr'. 2014-06-09 02:03:06 +00:00
compiler-rt [asan] Remove dependency of tests on runtime library in standalone build. 2014-06-09 11:17:37 +00:00
debuginfo-tests relax testcase for LLDB output format compatibility. 2014-03-19 23:06:18 +00:00
libclc Fix build broken by LLVM commit r209103 2014-06-03 15:43:57 +00:00
libcxx Testing infastructure: A template for char_traits where all the functions are constexpr, and a comparison predicate which counts how many times it's been called. 2014-06-06 22:33:40 +00:00
libcxxabi Add test case for inherited exceptions 2014-06-03 21:50:11 +00:00
lld [Mips] Make dt-textrel.test test case independent from external input files. 2014-06-09 13:45:58 +00:00
lldb Added gdb-remote test for s packet, single stepping. 2014-06-09 17:46:37 +00:00
llvm Generate better location ranges for some register-described variables. 2014-06-09 21:53:47 +00:00
openmp CMake: remove duplicated source file from list 2014-06-02 13:09:24 +00:00
polly Adjust another test case to not access out of bounds 2014-06-04 19:41:47 +00:00