llvm-project/llvm/unittests/IR
Paul Robinson 75aa3d520d Add a DIExpression const-folder to prevent silly expressions.
It's entirely possible (because it actually happened) for a bool
variable to end up with a 256-bit DW_AT_const_value.  This came about
when a local bool variable was initialized from a bitfield in a
32-byte struct of bitfields, and after inlining and constant
propagation, the variable did have a constant value. The sequence of
optimizations had it carrying "i256" values around, but once the
constant made it into the llvm.dbg.value, no further IR changes could
affect it.

Technically the llvm.dbg.value did have a DIExpression to reduce it
back down to 8 bits, but the compiler is in no way ready to emit an
oversized constant *and* a DWARF expression to manipulate it.
Depending on the circumstances, we had either just the very fat bool
value, or an expression with no starting value.

The sequence of optimizations that led to this state did seem pretty
reasonable, so the solution I came up with was to invent a DWARF
constant expression folder.  Currently it only does convert ops, but
there's no reason it couldn't do other ops if that became useful.

This broke three tests that depended on having convert ops survive
into the DWARF, so I added an operator that would abort the folder to
each of those tests.

Differential Revision: https://reviews.llvm.org/D106915
2021-08-05 06:14:40 -07:00
..
AbstractCallSiteTest.cpp
AsmWriterTest.cpp
AttributesTest.cpp [OpaquePtr] Remove checking pointee type for byval/preallocated type 2021-07-07 14:28:55 -07:00
BasicBlockTest.cpp [RGT] Recode more unreachable assertions and tautologies 2021-03-19 09:17:22 -07:00
CFGBuilder.cpp Switch from llvm::is_trivially_copyable to std::is_trivially_copyable 2020-12-02 22:02:48 -08:00
CFGBuilder.h
CMakeLists.txt [NFC] Add missing dependency in the IR unittests 2020-11-18 10:10:44 +00:00
ConstantRangeTest.cpp [llvm] Add enum iteration to Sequence 2021-07-21 12:48:53 +00:00
ConstantsTest.cpp Reapply [ConstantFold] Fold more operations to poison 2021-05-13 16:04:12 +02:00
DataLayoutTest.cpp Add a default address space for globals to DataLayout 2020-11-20 15:46:52 +00:00
DebugInfoTest.cpp [DebugInfo][unittest] Fix heap-use-after-free after D76115 2021-03-29 23:31:14 -07:00
DebugTypeODRUniquingTest.cpp [DebugInfo] Support for DWARF attribute DW_AT_rank 2020-10-10 17:51:12 +05:30
DemandedBitsTest.cpp
DominatorTreeBatchUpdatesTest.cpp
DominatorTreeTest.cpp [DomTree] Accept Value as Def (NFC) 2020-10-22 18:32:03 +02:00
FunctionTest.cpp
IRBuilderTest.cpp [LoopVectorize] Don't create unnecessary vscale intrinsic calls 2021-04-22 09:01:52 +01:00
InstructionsTest.cpp [CallBase] Add hasRetAttr version that takes StringRef. 2020-12-10 17:00:16 +00:00
IntrinsicsTest.cpp
LegacyPassManagerTest.cpp
MDBuilderTest.cpp
ManglerTest.cpp
MetadataTest.cpp Add a DIExpression const-folder to prevent silly expressions. 2021-08-05 06:14:40 -07:00
ModuleTest.cpp
PassBuilderCallbacksTest.cpp Clean up uses of gmock Invoke in an attempt to make it work with GCC 6.2. NFCI. 2021-05-17 13:48:45 +02:00
PassManagerTest.cpp [NewPM] Hide pass manager debug logging behind -debug-pass-manager-verbose 2021-05-07 21:51:47 -07:00
PatternMatch.cpp [SVE][IR] Fix Binary op matching in PatternMatch::m_VScale 2021-07-23 11:39:13 +01:00
TimePassesTest.cpp [NewPM][PassInstrumentation] Add PreservedAnalyses parameter to AfterPass* callbacks 2020-08-21 16:10:42 +07:00
TypesTest.cpp [OpaquePtr] Create API to make a copy of a PointerType with some address space 2021-06-01 16:52:32 -07:00
UseTest.cpp
UserTest.cpp
VPIntrinsicTest.cpp [VP][NFC] Correct formatting in unit test 2021-07-15 12:38:47 +01:00
ValueHandleTest.cpp Fixup Asserts+!AbiBreakingChecks fallout from db33f85c71 2021-01-07 14:18:19 -08:00
ValueMapTest.cpp Put back the trailing commas on TYPED_TEST_SUITE 2021-05-17 14:14:13 +02:00
ValueTest.cpp [DebugInfo] Replace debug uses in replaceUsesOutsideBlock 2021-04-19 11:06:53 +01:00
VectorTypesTest.cpp [SVE] Remove reliance on TypeSize comparison operators in unit tests 2020-10-21 08:05:55 +01:00
VerifierTest.cpp [Attributes] Determine attribute properties from TableGen data 2021-07-12 22:13:38 +02:00