llvm-capstone/llvm/unittests/IR
Vedant Kumar 77ffce6954 [Instruction] Set metadata uses to undef on deletion
Summary:
Replace any extant metadata uses of a dying instruction with undef to
preserve debug info accuracy. Some alternatives include:

- Treat Instruction like any other Value, and point its extant metadata
  uses to an empty ValueAsMetadata node. This makes extant dbg.value uses
  trivially dead (i.e. fair game for deletion in many passes), leading to
  stale dbg.values being in effect for too long.

- Call salvageDebugInfoOrMarkUndef. Not needed to make instruction removal
  correct. OTOH results in wasted work in some common cases (e.g. when all
  instructions in a BasicBlock are deleted).

This came up while discussing some basic cases in
https://reviews.llvm.org/D80052.

Reviewers: jmorse, TWeaver, aprantl, dexonsmith, jdoerfert

Subscribers: jholewinski, qcolombet, hiraditya, jfb, sstefan1, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D80264
2020-05-21 15:58:12 -07:00
..
AbstractCallSiteTest.cpp [AbstractCallSite] Look though constant cast expression when checking for callee use 2020-04-30 15:09:57 -07:00
AsmWriterTest.cpp IR: Cleanup after test to silence ASAN builds 2019-08-03 15:40:00 +00:00
AttributesTest.cpp [Alignment][NFC] Attributes use Align/MaybeAlign 2019-10-22 09:51:06 +00:00
BasicBlockTest.cpp [IR] Lazily number instructions for local dominance queries 2020-02-18 14:44:24 -08:00
CFGBuilder.cpp [CFG/BasicBlock] Rename succ_const to const_succ. [NFC] 2020-03-25 12:40:55 -07:00
CFGBuilder.h
CMakeLists.txt [AbstractCallSite] Look though constant cast expression when checking for callee use 2020-04-30 15:09:57 -07:00
ConstantRangeTest.cpp [ConstantRange] Add initial support for binaryXor. 2020-03-24 12:59:50 +00:00
ConstantsTest.cpp [IR] fix Constant::isElementWiseEqual() to allow for all undef elements compare 2020-01-17 08:31:16 -05:00
DataLayoutTest.cpp [Alignment][NFC] Add a helper function to DataLayout 2019-10-21 13:58:33 +00:00
DebugInfoTest.cpp [Instruction] Set metadata uses to undef on deletion 2020-05-21 15:58:12 -07:00
DebugTypeODRUniquingTest.cpp [DebugInfo] support for DW_AT_data_location in llvm 2020-05-15 11:33:17 +05:30
DominatorTreeBatchUpdatesTest.cpp
DominatorTreeTest.cpp [Dominators] Use Instruction::comesBefore for block-local queries, NFC 2020-02-20 16:41:51 -08:00
FunctionTest.cpp Make Value::getPointerAlignment() return an Align, not a MaybeAlign. 2020-05-20 16:37:20 -07:00
InstructionsTest.cpp [llvm][IR][CastInst] Update castIsValid for scalable vectors. 2020-03-30 21:13:40 +00:00
IntrinsicsTest.cpp
IRBuilderTest.cpp [AArch64] Define ACLE FP conversion intrinsics with more specific predicate. 2020-04-23 10:53:23 +01:00
LegacyPassManagerTest.cpp [CallGraphUpdater] Removed references to calles when deleting function 2020-05-04 18:59:47 -07:00
ManglerTest.cpp
MDBuilderTest.cpp
MetadataTest.cpp [DebugInfo] support for DW_AT_data_location in llvm 2020-05-15 11:33:17 +05:30
ModuleTest.cpp [IR] Make Module::setProfileSummary to replace an existing ProfileSummary flag. 2020-05-21 11:38:39 -07:00
PassBuilderCallbacksTest.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
PassManagerTest.cpp [NewPassManager] Add assertions when getting statefull cached analysis. 2020-05-13 12:38:38 -07:00
PatternMatch.cpp Remove "mask" operand from shufflevector. 2020-03-31 13:08:59 -07:00
TimePassesTest.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
TypesTest.cpp
UserTest.cpp
UseTest.cpp
ValueHandleTest.cpp
ValueMapTest.cpp Replace non-recursive sys::Mutex users with std::mutex 2019-08-07 11:59:44 +00:00
ValueTest.cpp [Alignment][NFC] Remove dependency on GlobalObject::setAlignment(unsigned) 2019-10-15 11:24:36 +00:00
VectorTypesTest.cpp [SVE][NFC] Remove unused variable 2020-04-29 14:30:32 -07:00
VerifierTest.cpp [SVE] Update API ConstantVector::getSplat() to use ElementCount. 2020-03-12 13:22:41 -07:00
VPIntrinsicTest.cpp Remove asserting getters from base Type 2020-04-17 14:03:31 -07:00