llvm-project/llvm/test/DebugInfo
Vedant Kumar d11155d273 [LiveDebugValues] Add cutoffs to avoid pathological behavior
Summary:
We received a report of LiveDebugValues consuming 25GB+ of RAM when
compiling code generated by Unity's IL2CPP scripting backend.

There's an initial 5GB spike due to repeatedly copying cached lists of
MachineBasicBlocks within the UserValueScopes members of VarLocs.

But the larger scaling issue arises due to the fact that prior to range
extension, there are 81K basic blocks and 156K DBG_VALUEs: given enough
memory, LiveDebugValues would insert 101 million MIs (I counted this by
incrementing a counter inside of VarLoc::BuildDbgValue).

It seems like LiveDebugValues would have to be rearchitected to support
this kind of input (we'd need some new represntation for DBG_VALUEs that
get inserted into ~every block via flushPendingLocs). OTOH, large globs
of auto-generated code are typically not debugged interactively.

So: add cutoffs to disable range extension when the input is too big. I
chose the cutoffs experimentally, erring on the conservative side. When
compiling a large collection of Apple software, range extension never
got disabled.

rdar://63418929

Reviewers: aprantl, friss, jmorse, Orlando

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D80662
2020-05-28 13:53:40 -07:00
..
AArch64 Reland D73534: [DebugInfo] Enable the debug entry values feature by default 2020-03-19 13:57:30 +01:00
AMDGPU [AMDGPU] Add Scratch Wave Offset to Scratch Buffer Descriptor in entry functions 2020-03-19 15:35:16 -04:00
ARM [ARM] Move ConstantIsland and LowOverheadLoops Passes. 2020-03-25 16:49:21 +01:00
COFF Revert "[llvm][test] Add COM: directives before colon-less non-CHECKs in comments. NFC" 2020-05-22 05:36:15 -06:00
Generic [globalopt] Don't emit DWARF fragments for members 2020-04-30 11:36:55 +01:00
Inputs [DebugInfo] Remove an outdated test. 2020-05-19 13:32:48 +07:00
Lanai
MIR [LiveDebugValues] Add cutoffs to avoid pathological behavior 2020-05-28 13:53:40 -07:00
MSP430
Mips [mips] Reorganize check directives in the test. NFC 2020-05-21 20:57:04 +03:00
NVPTX [Instruction] Set metadata uses to undef on deletion 2020-05-21 15:58:12 -07:00
PDB [test] Use yaml2obj -o %t instead of > %t 2020-01-21 17:20:18 -08:00
PowerPC
RISCV [test] llvm/test/: change llvm-objdump single-dash long options to double-dash options 2020-03-15 17:46:23 -07:00
Sparc [Object] Change ELFObjectFile<ELFT>::getFileFormatName() to use BFD names 2020-03-16 07:42:04 -07:00
SystemZ
WebAssembly [WebAssembly] fixed target index strings in DebugInfo test 2020-04-16 17:11:14 -07:00
X86 [DebugInfo] Upgrade DISubrange to support Fortran dynamic arrays 2020-05-28 13:46:41 +05:30
arange-overlap.test
arm-relocs.test
cDefaultLower.ll [DebugInfo] Upgrade DISubrange to support Fortran dynamic arrays 2020-05-28 13:46:41 +05:30
check-debugify-preserves-analyses.ll
cross-cu-inlining.test
cross-cu-scope.ll
debug-frame-cie-pointer-reloc.test [DebugInfo] Read CIE pointer as a relocatable value. 2020-02-20 09:12:05 +07:00
debugify-bogus-dbg-value.ll
debugify-each.ll [Debugify] Strip added metadata in the -debugify-each pipeline 2020-04-13 10:55:17 -07:00
debugify-export.ll
debugify-report-missing-locs-only.ll
debugify.ll [MachineDebugify] Insert synthetic DBG_VALUE instructions 2020-04-22 17:03:39 -07:00
debuglineinfo-macho.test
debuglineinfo-path.ll Restore `REQUIRES: default_triple` to a test 2020-03-03 09:43:36 -08:00
debuglineinfo.test
debugmacinfo-dwo.test [DebugInfo] Support for debug_macinfo.dwo section in llvm and llvm-dwarfdump. 2019-12-03 08:54:12 +05:30
debugmacinfo.test
duplicate_dbgvalue.ll [DebugInfo] Avoid generating duplicate llvm.dbg.value 2020-03-03 09:56:45 +05:30
dwarfdump-accel.test
dwarfdump-bad-lookup-address.test
dwarfdump-dataLocationExp.ll Fixed arm build bot failure after 4042ada1c1 2020-05-15 23:30:05 +05:30
dwarfdump-dataLocationVar.ll Fixed arm build bot failure after 4042ada1c1 2020-05-15 23:30:05 +05:30
dwarfdump-debug-frame-simple.test
dwarfdump-decompression-corrupt.test llvm-dwarfdump: Return non-zero on error 2020-04-09 20:53:58 -07:00
dwarfdump-decompression-error.test llvm-dwarfdump: Return non-zero on error 2020-04-09 20:53:58 -07:00
dwarfdump-dump-flags.test
dwarfdump-dump-gdbindex.test
dwarfdump-dwp.test
dwarfdump-implicit-const.test
dwarfdump-invalid.test
dwarfdump-macho-relocs.test
dwarfdump-macho-universal.test
dwarfdump-objc.test
dwarfdump-pubnames.test
dwarfdump-pushobjectaddress.ll Fixed arm build bot failure after ab699d78a2 2020-05-15 23:14:56 +05:30
dwarfdump-ranges.test
dwarfdump-type-units.test
dwarfdump-zlib.test
dwo.ll
fortranDefaultLower.ll [DebugInfo] Upgrade DISubrange to support Fortran dynamic arrays 2020-05-28 13:46:41 +05:30
fortranSubrangeExpr.ll [DebugInfo] Upgrade DISubrange to support Fortran dynamic arrays 2020-05-28 13:46:41 +05:30
fortranSubrangeInt.ll [DebugInfo] Upgrade DISubrange to support Fortran dynamic arrays 2020-05-28 13:46:41 +05:30
fortranSubrangeVar.ll Fixed bot failure after d20bf5a725 2020-05-28 18:01:38 +05:30
gcc-local-mem-func.test
high-pc-constant.test
invalid-relocations.test [test] Use yaml2obj -o %t instead of > %t 2020-01-21 17:20:18 -08:00
macro_link.ll
member-pointers.o
missing-abstract-variable.o
omit-empty.ll
pr34186.ll
pr34672.ll
pr37964.ll [Transforms][Debugify] Ignore PHI nodes when checking for DebugLocs 2020-02-27 16:14:11 +00:00
precomp.test [test] Use yaml2obj -o %t instead of > %t 2020-01-21 17:20:18 -08:00
salvage-cast-debug-info.ll Reapply: [DebugInfo] Correctly handle salvaged casts and split fragments at ISel 2019-12-18 16:26:42 +00:00
simplify-cfg-preserve-dbg-values.ll [SimplifyCFG] Remap rewritten debug intrinsic operands. 2020-05-08 11:10:25 -07:00
skeletoncu.ll
strip-DIGlobalVariable.ll
strip-loop-metadata.ll
strip-module-flags.ll
symbolize-64bit-address.test
symbolize-absolute-path-in-debug-line.s
symbolize-build-id-error.test [Symbolize] Handle error after the notes loop 2020-01-27 11:00:27 -08:00
symbolize-build-id.test [llvm-symbolizer] Support debug file lookup using build ID 2019-12-04 15:07:56 -08:00
symbolize-demangling.s
symbolize-directory.s
symbolize-gnu-debuglink-fallback.test
symbolize-gnu-debuglink-no-realpath.test
symbolize-gnu-debuglink.test
symbolize-inlined.test [test][tools] Add missing and improve testing 2019-12-09 12:24:23 +00:00
symbolize-macho-universal-unknown-arch.test
symbolize-macho-universal.test
symbolize-missing-file.test
symbolize-no-debug-str.test
symbolize-paths.s attempt to fix symbolize-paths.s everywhere after cd68f4 2020-01-29 14:26:50 -05:00
symbolize-shared-abbrev.s
symbolize-split-dwarf-empty.test
symbolize-split-dwarf-no-skel-address.test
symbolize-stripped-sections.test
symbolize-stripped.test
symbolize-tu.test
symbolize-zlib.test
symbolize.test
typeunit-header.test
unrolled-loop-remainder.ll