llvm-project/llvm/test/Transforms
Jeremy Morse f10af3f134 [DebugInfo][InstCombine] Prefer to salvage debuginfo over sinking it
When instcombine sinks an instruction between two basic blocks, it sinks any
dbg.value users in the source block with it, to prevent debug use-before-free.
However we can do better by attempting to salvage the debug users, which would
avoid moving where the variable location changes. If we successfully salvage,
still sink a (cloned) dbg.value with the sunk instruction, as the sunk
instruction is more likely to be "live" later in the compilation process.

If we can't salvage dbg.value users of a sunk instruction, mark the dbg.values
in the original block as being undef. This terminates any earlier variable
location range, and represents the fact that we've optimized out the variable
location for a portion of the program.

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

llvm-svn: 353936
2019-02-13 10:54:53 +00:00
..
ADCE Remove irrelevant references to legacy git repositories from 2019-01-15 16:18:52 +00:00
AddDiscriminators treat invoke like call 2019-01-15 21:26:51 +00:00
AggressiveInstCombine [AggressiveInstCombine] convert rotate with guard branch into funnel shift (PR34924) 2018-12-17 21:14:51 +00:00
AlignmentFromAssumptions
ArgumentPromotion ArgumentPromotion should copy all metadata to new Function 2019-02-08 17:08:27 +00:00
AtomicExpand Codegen support for atomicrmw fadd/fsub 2019-01-22 18:36:06 +00:00
BDCE [BDCE] Remove dead uses of arguments 2019-01-04 21:21:43 +00:00
BlockExtractor [hot-cold-split] Name split functions with ".cold" suffix 2018-10-24 18:53:47 +00:00
BranchFolding
CallSiteSplitting [CallSiteSplitting] Report edge deletion to DomTreeUpdater 2018-11-29 15:27:04 +00:00
CalledValuePropagation
CanonicalizeAliases [ThinLTO] Handle chains of aliases 2019-01-04 19:04:54 +00:00
CodeExtractor [CodeExtractor] Update function's assumption cache after extracting blocks from it 2019-02-08 06:55:18 +00:00
CodeGenPrepare [CGP] add test for unsigned subtract of 1 with overflow; NFC 2019-02-05 15:27:40 +00:00
ConstProp [ConstProp] add test for miscompile from bitcast transform; NFC 2019-02-12 21:49:56 +00:00
ConstantHoisting X86/TargetTransformInfo: Report div/rem constant immediate costs as TCC_Free 2018-10-11 23:14:35 +00:00
ConstantMerge
Coroutines Remove irrelevant references to legacy git repositories from 2019-01-15 16:18:52 +00:00
CorrelatedValuePropagation [CVP] Use LVI to constant fold deopt operands 2019-01-22 01:34:33 +00:00
CrossDSOCFI
DCE
DeadArgElim [IPO][AVR] Create new Functions in the default address space specified in the data layout 2018-12-18 09:52:52 +00:00
DeadStoreElimination [DebugInfo] Don't salvage load operations (PR40628). 2019-02-12 10:54:30 +00:00
DivRemPairs
EarlyCSE [EarlyCSE] If DI can't be salvaged, mark it as unavailable. 2018-12-17 01:42:39 +00:00
EliminateAvailableExternally
EntryExitInstrumenter
ExpandMemCmp/X86 Re-land r349731 "[CodeGen][ExpandMemcmp] Add an option for allowing overlapping loads. 2018-12-20 13:01:04 +00:00
Float2Int
ForcedFunctionAttrs
FunctionAttrs [FuncAttrs] Remove "access range attributes" for read-none functions 2018-09-11 11:51:29 +00:00
FunctionImport Recommit "[ThinLTO] Rename COMDATs for COFF when promoting/renaming COMDAT leader" 2019-01-31 17:18:11 +00:00
GCOVProfiling [DebugInfo] IR/Bitcode changes for DISubprogram flags. 2018-11-28 21:14:32 +00:00
GVN [DebugInfo] Don't salvage load operations (PR40628). 2019-02-12 10:54:30 +00:00
GVNHoist [MemorySSAUpdater] Avoid creating self-referencing MemoryDefs 2018-09-11 14:29:59 +00:00
GVNSink [Local] Make DoesKMove required for combineMetadata. 2018-08-24 11:40:04 +00:00
GlobalDCE GlobalDCE: Teach isEmptyFunction() to ignore debug intrinsics. 2018-11-16 17:47:21 +00:00
GlobalMerge [GlobalMerge] Allow merging globals with explicit section markings. 2018-08-02 23:54:16 +00:00
GlobalOpt [GlobalOpt] Simplify __cxa_atexit elimination 2019-02-09 09:18:37 +00:00
GlobalSplit
GuardWidening [GuardWidening] Support widening of explicitly expressed guards 2019-02-13 09:56:30 +00:00
HotColdSplit [HotColdSplit] With PGO add profile entry metadata to split cold function 2019-02-07 17:50:35 +00:00
IPConstantProp [IPCP] Don't crash due to arg count/type mismatch between caller/callee 2019-01-29 10:19:44 +00:00
IRCE [IRCE] Support narrow latch condition for wide range checks 2019-01-23 07:20:56 +00:00
IndVarSimplify [IndVars] Fix corner case with unreachable Phi inputs. PR40454 2019-02-12 09:59:44 +00:00
IndirectBrExpand
InferAddressSpaces Add a 'dynamic' parameter to the objectsize intrinsic 2019-01-30 20:34:35 +00:00
InferFunctionAttrs Allow norecurse attribute on functions that have debug infos. 2018-12-05 16:48:00 +00:00
Inline AMDGPU: Ignore CodeObjectV3 when inlining 2019-02-12 23:30:11 +00:00
InstCombine [DebugInfo][InstCombine] Prefer to salvage debuginfo over sinking it 2019-02-13 10:54:53 +00:00
InstMerge [DebugInfo][InstMerge] Fix -debugify for phi node created by -mldst-motion 2018-11-02 18:25:41 +00:00
InstNamer
InstSimplify [InstSimplify] Missed optimization in math expression: log10(pow(10.0,x)) == x, log2(pow(2.0,x)) == x 2019-02-03 03:48:30 +00:00
InterleavedAccess
Internalize
JumpThreading Implementation of asm-goto support in LLVM 2019-02-08 20:48:56 +00:00
LCSSA [LCSSA] Handle case with single new PHI faster. 2019-02-02 15:26:05 +00:00
LICM [LICM&MSSA] Limit store hoisting. 2019-02-11 19:07:15 +00:00
LoadStoreVectorizer [PM] Port LoadStoreVectorizer to the new pass manager. 2018-12-07 08:23:37 +00:00
LoopDataPrefetch
LoopDeletion Fix RUN line in test/Transforms/LoopDeletion/crashbc.ll 2019-01-10 09:58:23 +00:00
LoopDistribute [Unroll/UnrollAndJam/Vectorizer/Distribute] Add followup loop attributes. 2018-12-12 17:32:52 +00:00
LoopIdiom [LoopIdiomRecognize] @llvm.dbg values shouldn't affect the transformation. 2019-02-03 20:33:20 +00:00
LoopInstSimplify Update MemorySSA in LoopInstSimplify. 2018-08-22 20:05:21 +00:00
LoopInterchange [LoopInterchange] Support reductions across inner and outer loop. 2018-11-08 20:44:19 +00:00
LoopLoadElim
LoopPredication [LoopPredication] Support guards expressed as branches by widenable condition 2019-01-22 11:49:06 +00:00
LoopReroll [LoopReroll] Fix reroll root legality checking. 2019-02-12 00:33:25 +00:00
LoopRotate Remove irrelevant references to legacy git repositories from 2019-01-15 16:18:52 +00:00
LoopSimplify Revert r346810 "Preserve loop metadata when splitting exit blocks" 2018-11-14 01:47:32 +00:00
LoopSimplifyCFG [LoopSimplifyCFG] Fix test broken in release mode in r353813 2019-02-12 14:43:30 +00:00
LoopStrengthReduce [LSR] Generate cross iteration indexes 2019-02-07 13:32:54 +00:00
LoopTransformWarning [WarnMissedTransforms] Do not warn about already vectorized loops. 2019-02-04 19:55:59 +00:00
LoopUnroll [UnrollRuntime] Fix domTree failures in multiexit unrolling 2019-01-08 17:16:25 +00:00
LoopUnrollAndJam [Unroll/UnrollAndJam/Vectorizer/Distribute] Add followup loop attributes. 2018-12-12 17:32:52 +00:00
LoopUnswitch Update MemorySSA in LoopUnswitch. 2018-09-11 19:19:21 +00:00
LoopVectorize Refactor setAlreadyUnrolled() and setAlreadyVectorized(). 2019-02-11 19:45:44 +00:00
LoopVersioning
LoopVersioningLICM
LowerAtomic
LowerExpectIntrinsic
LowerGuardIntrinsic
LowerInvoke
LowerSwitch
LowerTypeTests
LowerWidenableCondition Default lowering for experimental.widenable.condition 2019-01-31 09:10:17 +00:00
MakeGuardsExplicit Introduce llvm.experimental.widenable_condition intrinsic 2018-12-07 14:39:46 +00:00
Mem2Reg [Mem2Reg] Fix nondeterministic corner case 2018-11-30 19:20:02 +00:00
MemCpyOpt [ValueTracking] Look through casts when determining non-nullness 2019-01-26 23:40:35 +00:00
MergeFunc Implementation of asm-goto support in LLVM 2019-02-08 20:48:56 +00:00
MergeICmps [MergeICmps] Do not perform the transformation if GEP is used outside of block 2018-11-05 18:16:32 +00:00
MetaRenamer
NameAnonGlobals
NaryReassociate
NewGVN Remove irrelevant references to legacy git repositories from 2019-01-15 16:18:52 +00:00
ObjCARC Teach ObjCARC optimizer about equivalent PHIs when eliminating autoreleaseRV/retainRV pairs 2019-01-03 01:38:08 +00:00
PGOProfile [PGO] Make pgo related options in opt more consistent. 2019-01-16 23:19:02 +00:00
PartiallyInlineLibCalls
PhaseOrdering [InstCombine] canonicalize raw IR rotate patterns to funnel shift 2019-01-01 21:51:39 +00:00
PlaceSafepoints
PreISelIntrinsicLowering Preserve the linkage for objc* intrinsics as clang will set them to weak_external in some cases 2018-12-18 22:42:08 +00:00
PruneEH [Transforms] Preserve metadata when converting invoke to call. 2018-12-14 18:15:11 +00:00
Reassociate [PatternMatch] Handle undef vectors consistently 2018-11-20 16:08:19 +00:00
Reg2Mem
RewriteStatepointsForGC [RS4GC] Expand/standardize tests introduced in rL352059 2019-01-24 16:45:23 +00:00
SCCP [ConstantFold] Use getMinSignedBits for APInt in isIndexInRangeOfArrayType. 2018-12-12 18:55:14 +00:00
SLPVectorizer [X86][SLP] Enable SLP vectorization for 128-bit horizontal X86 instructions (add, sub) 2019-02-13 08:26:43 +00:00
SROA [Analysis] Fix isSafeToLoadUnconditionally handling of volatile. 2019-01-24 21:31:13 +00:00
SafeStack SafeStack: Prevent OOB reads with mem intrinsics 2018-08-30 20:44:51 +00:00
SampleProfile Update entry count for cold calls 2019-01-24 00:55:23 +00:00
ScalarizeMaskedMemIntrin/X86 [ScalarizeMaskedMemIntrin] Use MinAlign to calculate alignment for the scalar load/stores to handle element types that are byte-sized but not powers of 2. 2018-09-28 03:35:37 +00:00
Scalarizer Introduce llvm.loop.parallel_accesses and llvm.access.group metadata. 2018-12-20 04:58:07 +00:00
SeparateConstOffsetFromGEP
SimpleLoopUnswitch Update MemorySSA in SimpleLoopUnswitch. 2018-12-04 14:23:37 +00:00
SimplifyCFG [DWARF] LLVM ERROR: Broken function found, while removing Debug Intrinsics. 2019-02-11 10:16:38 +00:00
Sink
SpeculateAroundPHIs
SpeculativeExecution
StraightLineStrengthReduce [SLSR] use 'match' to simplify code; NFC 2018-10-23 14:07:39 +00:00
StripDeadPrototypes
StripSymbols
StructurizeCFG StructurizeCFG: Simplify inserted PHI nodes 2018-10-17 15:37:41 +00:00
SyntheticCountsPropagation
TailCallElim [TailCallElim] Enable marking of calls with byval as tails 2018-10-08 18:03:40 +00:00
ThinLTOBitcodeWriter [LTO] Record whether LTOUnit splitting is enabled in index 2019-01-11 18:31:57 +00:00
Util Remove irrelevant references to legacy git repositories from 2019-01-15 16:18:52 +00:00
WholeProgramDevirt [ThinLTO] Efficiency fix for writing type id records in per-module indexes 2018-09-25 20:14:40 +00:00