llvm-project/llvm/unittests/CodeGen
Jeremy Morse 14aaaa1236 Re-apply 3fab2d138e, now with a triple added
Was reverted in 1c1b670a73 as it broke all non-x86 bots. Original commit
message:

[DebugInfo][InstrRef] Add a max-stack-slots-to-track cut-out

In certain circumstances with things like autogenerated code and asan, you
can end up with thousands of Values live at the same time, causing a large
working set and a lot of information spilled to the stack. Unfortunately
InstrRefBasedLDV doesn't cope well with this and consumes a lot of memory
when there are many many stack slots. See the reproducer in D116821.

It seems very unlikely that a developer would be able to reason about
hundreds of live named local variables at the same time, so a huge working
set and many stack slots is an indicator that we're likely analysing
autogenerated or instrumented code. In those cases: gracefully degrade by
setting an upper bound on the amount of stack slots to track. This limits
peak memory consumption, at the cost of dropping some variable locations,
but in a rare scenario where it's unlikely someone is actually going to
use them.

In terms of the patch, this adds a cl::opt for max number of stack slots to
track, and has the stack-slot-numbering code optionally return None. That
then filters through a number of code paths, which can then chose to not
track a spill / restore if it touches an untracked spill slot. The added
test checks that we drop variable locations that are on the stack, if we
set the limit to zero.

Differential Revision: https://reviews.llvm.org/D118601
2022-02-02 11:04:00 +00:00
..
GlobalISel Reapply "Revert "GlobalISel: Add G_ASSERT_ALIGN hint instruction" 2022-01-24 09:26:52 -05:00
AArch64SelectionDAGTest.cpp Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
AllocationOrderTest.cpp [NFC][regalloc] Separate iteration from AllocationOrder 2020-10-05 16:13:18 -07:00
AsmPrinterDwarfTest.cpp [unittests][CodeGen] Mark tests that cannot be executed with GTEST_SKIP() 2021-05-21 13:39:52 +07:00
CMakeLists.txt [mlgo][regalloc] Add score calculation for training 2021-12-07 09:00:27 -08:00
DIEHashTest.cpp [unittests][CodeGen] Mark tests that cannot be executed with GTEST_SKIP() 2021-05-21 13:39:52 +07:00
DIETest.cpp [CodeGen][Debuginfo][NFC] Refactor DIE values SizeOf method to not depend on AsmPrinter. 2022-01-12 13:15:26 +03:00
InstrRefLDVTest.cpp Re-apply 3fab2d138e, now with a triple added 2022-02-02 11:04:00 +00:00
LexicalScopesTest.cpp Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
LowLevelTypeTest.cpp Add support for zero-sized Scalars as a LowLevelType 2021-07-22 13:47:19 +02:00
MFCommon.inc
MachineInstrBundleIteratorTest.cpp
MachineInstrTest.cpp Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
MachineOperandTest.cpp [MC] Refactor MCObjectFileInfo initialization and allow targets to create MCObjectFileInfo 2021-05-23 14:15:23 -07:00
PassManagerTest.cpp Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
RegAllocScoreTest.cpp Fix MSVC "not all control paths return a value" warning. NFC. 2021-12-07 18:09:44 +00:00
ScalableVectorMVTsTest.cpp [llvm] Add enum iteration to Sequence 2021-07-21 12:48:53 +00:00
SelectionDAGAddressAnalysisTest.cpp Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
TargetOptionsTest.cpp Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
TestAsmPrinter.cpp Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
TestAsmPrinter.h [debug-info] refactor emitDwarfUnitLength 2021-02-25 21:00:25 -05:00
TypeTraitsTest.cpp Switch from llvm::is_trivially_copyable to std::is_trivially_copyable 2020-12-02 22:02:48 -08:00