llvm-project/llvm/lib/CodeGen/GlobalISel
Jeremy Morse ed29dbaafa [DebugInfo] Remove some users of DBG_VALUEs IsIndirect field
This patch kills off a significant user of the "IsIndirect" field of
DBG_VALUE machine insts. Brought up in in PR41675, IsIndirect is
techncally redundant as it can be expressed by the DIExpression of a
DBG_VALUE inst, and it isn't helpful to have two ways of expressing
things.

Rather than setting IsIndirect, have DBG_VALUE creators add an extra deref
to the insts DIExpression. There should now be no appearences of
IsIndirect=True from isel down to LiveDebugVariables / VirtRegRewriter,
which is ensured by an assertion in LDVImpl::handleDebugValue. This means
we also get to delete the IsIndirect handling in LiveDebugVariables. Tests
can be upgraded by for example swapping the following IsIndirect=True
DBG_VALUE:

  DBG_VALUE $somereg, 0, !123, !DIExpression(DW_OP_foo)

With one where the indirection is in the DIExpression, by _appending_
a deref:

  DBG_VALUE $somereg, $noreg, !123, !DIExpression(DW_OP_foo, DW_OP_deref)

Which both mean the same thing. 

Most of the test changes in this patch are updates of that form; also some
changes in how the textual assembly printer handles these insts.

Differential Revision: https://reviews.llvm.org/D68945

llvm-svn: 374877
2019-10-15 10:46:24 +00:00
..
CMakeLists.txt [GISel]: Add GISelKnownBits analysis 2019-08-06 17:18:29 +00:00
CSEInfo.cpp [GlobalISel] CSEMIRBuilder: Add support for G_GEP 2019-08-15 23:45:45 +00:00
CSEMIRBuilder.cpp [globalisel] Add G_SEXT_INREG 2019-08-09 21:11:20 +00:00
CallLowering.cpp [GISel][CallLowering] Enable vector support in argument lowering 2019-10-11 20:22:57 +00:00
Combiner.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
CombinerHelper.cpp [Alignment][NFC] Remove unneeded llvm:: scoping on Align types 2019-09-27 12:54:21 +00:00
GISelChangeObserver.cpp [AArch64][GlobalISel] Enable copy elision in the pre-legalizer combine and fix a crash. 2019-04-13 00:33:25 +00:00
GISelKnownBits.cpp [Alignment][NFC] Use llv::Align in GISelKnownBits 2019-10-10 15:38:22 +00:00
GlobalISel.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
IRTranslator.cpp [DebugInfo] Remove some users of DBG_VALUEs IsIndirect field 2019-10-15 10:46:24 +00:00
InstructionSelect.cpp [GlobalISel] Defer setting HasCalls on MachineFrameInfo to selection time. 2019-09-20 23:52:07 +00:00
InstructionSelector.cpp Second attempt to add iterator_range::empty() 2019-10-07 18:14:24 +00:00
LLVMBuild.txt Make GlobalISel depend on SelectionDAG after D63169 2019-06-22 01:30:17 +00:00
LegalityPredicates.cpp GlobalISel: Add alignment to LegalityQuery MMOs 2019-02-14 22:41:09 +00:00
LegalizeMutations.cpp GlobalISel: Try to make legalize rules more useful for vectors 2019-02-07 17:25:51 +00:00
Legalizer.cpp [GlobalISel] Legalizer: Retry combining illegal artifacts as long as there new artifacts 2019-08-23 20:30:35 +00:00
LegalizerHelper.cpp GlobalISel: Implement fewerElementsVector for G_BUILD_VECTOR 2019-10-09 22:44:43 +00:00
LegalizerInfo.cpp Second attempt to add iterator_range::empty() 2019-10-07 18:14:24 +00:00
Localizer.cpp Localizer - fix "variable used but never read" analyzer warning. NFCI. 2019-09-23 11:38:10 +00:00
MachineIRBuilder.cpp [DebugInfo] Remove some users of DBG_VALUEs IsIndirect field 2019-10-15 10:46:24 +00:00
RegBankSelect.cpp GlobalISel: Add target pre-isel instructions 2019-10-07 18:43:29 +00:00
RegisterBank.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RegisterBankInfo.cpp Second attempt to add iterator_range::empty() 2019-10-07 18:14:24 +00:00
Utils.cpp [GISel] Simplifying return from else in function. NFC 2019-10-10 21:51:30 +00:00