forked from OSchip/llvm-project
d11155d273
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 |
||
---|---|---|
.. | ||
AArch64 | ||
AMDGPU | ||
ARM | ||
COFF | ||
Generic | ||
Inputs | ||
Lanai | ||
MIR | ||
MSP430 | ||
Mips | ||
NVPTX | ||
PDB | ||
PowerPC | ||
RISCV | ||
Sparc | ||
SystemZ | ||
WebAssembly | ||
X86 | ||
arange-overlap.test | ||
arm-relocs.test | ||
cDefaultLower.ll | ||
check-debugify-preserves-analyses.ll | ||
cross-cu-inlining.test | ||
cross-cu-scope.ll | ||
debug-frame-cie-pointer-reloc.test | ||
debugify-bogus-dbg-value.ll | ||
debugify-each.ll | ||
debugify-export.ll | ||
debugify-report-missing-locs-only.ll | ||
debugify.ll | ||
debuglineinfo-macho.test | ||
debuglineinfo-path.ll | ||
debuglineinfo.test | ||
debugmacinfo-dwo.test | ||
debugmacinfo.test | ||
duplicate_dbgvalue.ll | ||
dwarfdump-accel.test | ||
dwarfdump-bad-lookup-address.test | ||
dwarfdump-dataLocationExp.ll | ||
dwarfdump-dataLocationVar.ll | ||
dwarfdump-debug-frame-simple.test | ||
dwarfdump-decompression-corrupt.test | ||
dwarfdump-decompression-error.test | ||
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 | ||
dwarfdump-ranges.test | ||
dwarfdump-type-units.test | ||
dwarfdump-zlib.test | ||
dwo.ll | ||
fortranDefaultLower.ll | ||
fortranSubrangeExpr.ll | ||
fortranSubrangeInt.ll | ||
fortranSubrangeVar.ll | ||
gcc-local-mem-func.test | ||
high-pc-constant.test | ||
invalid-relocations.test | ||
macro_link.ll | ||
member-pointers.o | ||
missing-abstract-variable.o | ||
omit-empty.ll | ||
pr34186.ll | ||
pr34672.ll | ||
pr37964.ll | ||
precomp.test | ||
salvage-cast-debug-info.ll | ||
simplify-cfg-preserve-dbg-values.ll | ||
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-build-id.test | ||
symbolize-demangling.s | ||
symbolize-directory.s | ||
symbolize-gnu-debuglink-fallback.test | ||
symbolize-gnu-debuglink-no-realpath.test | ||
symbolize-gnu-debuglink.test | ||
symbolize-inlined.test | ||
symbolize-macho-universal-unknown-arch.test | ||
symbolize-macho-universal.test | ||
symbolize-missing-file.test | ||
symbolize-no-debug-str.test | ||
symbolize-paths.s | ||
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 |