llvm-project/llvm/lib/Transforms/InstCombine
Vedant Kumar 9ece818291 [InstCombine] Preserve debug value when simplifying cast-of-select
InstCombine has a cast transform that matches a cast-of-select:

  Orig = cast (Src = select Cond TV FV)

And tries to replace it with a select which has the cast folded in:

  NewSel = select Cond (cast TV) (cast FV)

The combiner does RAUW(Orig, NewSel), so any debug values for Orig would
survive the transform. But debug values for Src would be lost.

This patch teaches InstCombine to replace all debug uses of Src with
NewSel (taking care of doing any necessary DIExpression rewriting).

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

llvm-svn: 337310
2018-07-17 18:08:36 +00:00
..
CMakeLists.txt InstCombine/AMDGPU: Add dimension-aware image intrinsics to SimplifyDemanded 2018-06-21 13:37:31 +00:00
InstCombineAddSub.cpp [InstCombine] return when SimplifyAssociativeOrCommutative makes a change 2018-07-13 01:18:07 +00:00
InstCombineAndOrXor.cpp [InstCombine] return when SimplifyAssociativeOrCommutative makes a change 2018-07-13 01:18:07 +00:00
InstCombineCalls.cpp Simplify recursive launder.invariant.group and strip 2018-07-12 23:55:20 +00:00
InstCombineCasts.cpp [InstCombine] Preserve debug value when simplifying cast-of-select 2018-07-17 18:08:36 +00:00
InstCombineCompares.cpp Fix MSVC "result of 32-bit shift implicitly converted to 64 bits" warning. NFCI. 2018-07-17 09:39:55 +00:00
InstCombineInternal.h [InstCombine] allow more shuffle folds using safe constants 2018-07-09 23:22:47 +00:00
InstCombineLoadStoreAlloca.cpp llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
InstCombineMulDivRem.cpp [InstCombine] Corrections in comments for division transformation (NFC) 2018-07-15 17:06:59 +00:00
InstCombinePHI.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
InstCombineSelect.cpp [InstCombine] add more SPFofSPF folding 2018-07-16 02:23:00 +00:00
InstCombineShifts.cpp [InstCombine] simplify binops before trying other folds 2018-06-21 17:06:36 +00:00
InstCombineSimplifyDemanded.cpp [X86] Remove and autoupgrade the scalar fma intrinsics with masking. 2018-07-12 00:29:56 +00:00
InstCombineTables.td InstCombine/AMDGPU: Add dimension-aware image intrinsics to SimplifyDemanded 2018-06-21 13:37:31 +00:00
InstCombineVectorOps.cpp [InstCombine] allow flag propagation when using safe constant 2018-07-10 16:09:49 +00:00
InstructionCombining.cpp [InstCombine] allow more shuffle folds using safe constants 2018-07-09 23:22:47 +00:00
LLVMBuild.txt