1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00
llvm-mirror/lib
David Blaikie 78e228c700 DebugInfo: Improve debug location merging
Fix a set of related bugs:

* Considering two locations as equivalent when their lines are the same
but their scopes are different causes erroneous debug info that
attributes a commoned call to be attributed to one of the two calls it
was commoned from.

* The previous code to compute a new location's scope was inaccurate and
would use the inlinedAt that was the /parent/ of the inlinedAt that is
the nearest common one, and also used that parent scope instead of the
nearest common scope.

* Not generating new locations generally seemed like a lower quality
choice

There was some risk that generating more new locations could hurt object
size by making more fine grained line table entries, but it looks like
that was offset by the decrease in line table (& address & ranges) size
caused by more accurately computing the scope - which likely lead to
fewer range entries (more contiguous ranges) & reduced size that way.

All up with these changes I saw minor reductions (-1.21%, -1.77%) in
.rela.debug_ranges and .rela.debug_addr (in a fission, compressed debug
info build) as well as other minor size changes (generally reductinos)
across the board (-1.32% debug_info.dwo, -1.28% debug_loc.dwo). Measured
in an optimized (-O2) build of the clang binary.

If you are investigating a size regression in an optimized debug builds,
this is certainly a patch to look into - and I'd be happy to look into
any major regressions found & see what we can do to address them.

llvm-svn: 340583
2018-08-23 22:35:58 +00:00
..
Analysis [ValueTracking] Fix assert message and add test case for r340546 and PR38677. 2018-08-23 17:45:53 +00:00
AsmParser Allow creating llvm::Function in non-zero address spaces 2018-08-23 09:25:17 +00:00
BinaryFormat Fix undefined behavior in r340457 2018-08-23 02:51:09 +00:00
Bitcode Allow creating llvm::Function in non-zero address spaces 2018-08-23 09:25:17 +00:00
CodeGen [RegisterCoalescer] Fix for assert in removePartialRedundancy 2018-08-23 17:28:33 +00:00
DebugInfo [DWARF] Unify warning callbacks. NFC. 2018-08-23 12:43:33 +00:00
Demangle [MS Demangler] Print template constructor args. 2018-08-21 22:52:52 +00:00
ExecutionEngine [RuntimeDyld] Fix a bug in RuntimeDyld::loadObjectImpl that was over-allocating 2018-08-18 18:38:37 +00:00
Fuzzer
FuzzMutate Remove trailing space 2018-07-30 19:41:25 +00:00
IR DebugInfo: Improve debug location merging 2018-08-23 22:35:58 +00:00
IRReader
LineEditor
Linker [NFC] Remove an empty line. 2018-07-27 06:50:45 +00:00
LTO Remove trailing space 2018-07-30 19:41:25 +00:00
MC Initialize the address-significance table fragment's layout order. 2018-08-23 06:57:49 +00:00
Object [WebAssembly] Ensure relocation entries are ordered by offset 2018-08-22 17:27:31 +00:00
ObjectYAML [yaml2obj] - Add a support for changing EntSize. 2018-08-07 08:11:38 +00:00
Option Re-revert "[Option] Fix PR37006 prefix choice in findNearest" 2018-05-19 16:21:01 +00:00
Passes Revert "[GVNHoist] Re-enable GVNHoist by default" 2018-07-30 20:07:33 +00:00
ProfileData [Coverage] Ignore 'unused' functions with non-zero execution counts 2018-08-07 22:25:36 +00:00
Support Fixup AreCoreFilesPrevented() to consider first LLVM_ENABLE_CRASH_DUMPS and secondly coreFilesPrevented. 2018-08-23 18:20:13 +00:00
TableGen Remove trailing space 2018-07-30 19:41:25 +00:00
Target [MIPS GlobalISel] Lower i8 and i16 arguments 2018-08-23 20:41:09 +00:00
Testing [LLVMTestingSupport] Add explicit linkage to LLVMSupport 2018-04-08 06:49:17 +00:00
ToolDrivers Give llvm-lib rudimentary help output. 2018-07-14 02:29:44 +00:00
Transforms [LoopVectorize][NFCI] Use find instead of count 2018-08-23 18:34:58 +00:00
WindowsManifest
XRay [XRay] Refactor file header reading (NFC) 2018-08-22 07:37:55 +00:00
CMakeLists.txt
LLVMBuild.txt