hanchenye-llvm-project/llvm/test/Transforms
Daniel Sanders ef8761fd3b Fix non-determinism in Reassociate caused by address coincidences
Summary:
Between building the pair map and querying it there are a few places that
erase and create Values. It's rare but the address of these newly created
Values is occasionally the same as a just-erased Value that we already
have in the pair map. These coincidences should be accounted for to avoid
non-determinism.

Thanks to Roman Tereshin for the test case.

Reviewers: rtereshin, bogner

Reviewed By: rtereshin

Subscribers: mgrang, llvm-commits

Tags: #llvm

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

llvm-svn: 356803
2019-03-22 20:16:35 +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 Temporarily revert "ArgumentPromotion should copy all metadata to new Function" and the dependent patch "Refine ArgPromotion metadata handling" as they're causing segfaults in argument promotion. 2019-02-28 01:11:12 +00:00
AtomicExpand [AtomicExpand] Allow libcall expansion for non-zero address spaces (try 2) 2019-03-06 19:27:13 +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] Do not lift lifetime.end markers for region inputs 2019-02-15 18:46:58 +00:00
CodeGenPrepare [CodeGenPrepare] limit formation of overflow intrinsics (PR41129) 2019-03-21 13:57:07 +00:00
ConstProp [ConstantFolding] Fix GetConstantFoldFPValue to avoid cast overflow. 2019-03-22 16:37:37 +00:00
ConstantHoisting [ConstantHoisting] avoid hang/crash from unreachable blocks (PR40930) 2019-03-04 20:57:14 +00:00
ConstantMerge
Coroutines [coroutines][PR40979] Ignore unreachable uses across suspend points 2019-03-11 18:31:28 +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 [X86] Remove IntrArgMemOnly from target specific gather/scatter intrinsics 2019-03-01 21:02:40 +00:00
DivRemPairs
EarlyCSE AMDGPU: Remove IntrReadMem from memtime/memrealtime intrinsics 2019-02-25 20:16:11 +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
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 [GVN] Small tweaks to comments, style, and missed vector handling 2019-02-20 00:31:28 +00:00
GVNHoist IR: Support parsing numeric block ids, and emit them in textual output. 2019-03-22 18:27:13 +00:00
GVNSink
GlobalDCE GlobalDCE: Teach isEmptyFunction() to ignore debug intrinsics. 2018-11-16 17:47:21 +00:00
GlobalMerge
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] Disable splitting for sanitized functions 2019-02-26 22:55:46 +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 [SCEV] Ensure that isHighCostExpansion takes into account what is being divided 2019-03-05 12:12:18 +00:00
IndirectBrExpand
InferAddressSpaces IR: Add immarg attribute 2019-03-12 21:02:54 +00:00
InferFunctionAttrs [SelectionDAG] Allow the user to specify a memeq function. 2019-03-08 09:07:45 +00:00
Inline [X86] Filter out tuning feature flags and a few ISA feature flags when checking for function inline compatibility. 2019-02-19 17:05:11 +00:00
InstCombine [Tests] Add masked.gather tests for non-constant masks + speculation possibilities 2019-03-22 16:39:04 +00:00
InstMerge Tighten up tests that use -debugify as a shortcut. NFC 2019-03-14 23:09:17 +00:00
InstNamer
InstSimplify [InstSimplify] Add tests for signed icmp of and/or; NFC 2019-03-21 21:13:08 +00:00
InterleavedAccess
Internalize
JumpThreading Tighten up tests that use -debugify as a shortcut. NFC 2019-03-14 23:09:17 +00:00
LCSSA [LCSSA] Handle case with single new PHI faster. 2019-02-02 15:26:05 +00:00
LICM [LICM & MemorySSA] Don't sink/hoist stores in the presence of ordered loads. 2019-03-20 18:33:37 +00:00
LoadStoreVectorizer Fix invalid target triples in tests. (NFC) 2019-03-04 23:37:41 +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
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 [LoopRotate] fix crash encountered with callbr 2019-03-06 23:04:40 +00:00
LoopSimplify Revert r346810 "Preserve loop metadata when splitting exit blocks" 2018-11-14 01:47:32 +00:00
LoopSimplifyCFG [LoopSimplifyCFG] Update MemorySSA after r353911. 2019-02-21 19:54:05 +00:00
LoopStrengthReduce [LSR] Update test from rL356256 after rebase. 2019-03-15 12:37:50 +00:00
LoopTransformWarning [WarnMissedTransforms] Do not warn about already vectorized loops. 2019-02-04 19:55:59 +00:00
LoopUnroll [LoopUnrollPeel] Add case where we should forget the peeled loop from SCEV. 2019-02-14 13:59:39 +00:00
LoopUnrollAndJam [Unroll/UnrollAndJam/Vectorizer/Distribute] Add followup loop attributes. 2018-12-12 17:32:52 +00:00
LoopUnswitch
LoopVectorize [InstCombine] Don't transform ((C1 OP zext(X)) & C2) -> zext((C1 OP X) & C2) if either zext or OP has another use. 2019-03-21 17:50:49 +00:00
LoopVersioning
LoopVersioningLICM
LowerAtomic
LowerExpectIntrinsic Remove immarg from llvm.expect 2019-03-17 23:16:18 +00:00
LowerGuardIntrinsic
LowerInvoke
LowerSwitch IR: Support parsing numeric block ids, and emit them in textual output. 2019-03-22 18:27:13 +00:00
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 [InstSimplify] SimplifyICmpInst - icmp eq/ne %X, undef -> undef 2019-03-19 14:08:23 +00:00
ObjCARC Don't add a tail keyword to calls to ObjC runtime functions if the calls 2019-03-21 20:16:09 +00:00
PGOProfile [PGO] Fix hexagon buildbot errors in r355541 2019-03-06 22:16:47 +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 Fix non-determinism in Reassociate caused by address coincidences 2019-03-22 20:16:35 +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 [SLP] fix variables names in test; NFC 2019-03-22 18:33:11 +00:00
SROA Tighten up tests that use -debugify as a shortcut. NFC 2019-03-14 23:09:17 +00:00
SafeStack
SampleProfile Update entry count for cold calls 2019-01-24 00:55:23 +00:00
ScalarizeMaskedMemIntrin/X86 [ScalarizeMaskedMemIntrin] Add support for scalarizing expandload and compressstore intrinsics. 2019-03-21 17:38:52 +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 Tighten up tests that use -debugify as a shortcut. NFC 2019-03-14 23:09:17 +00:00
Sink
SpeculateAroundPHIs
SpeculativeExecution
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols
StructurizeCFG
SyntheticCountsPropagation
TailCallElim
ThinLTOBitcodeWriter [LTO] Record whether LTOUnit splitting is enabled in index 2019-01-11 18:31:57 +00:00
Util [LowerSwitch][AMDGPU] Do not handle impossible values 2019-02-22 14:33:46 +00:00
WholeProgramDevirt