llvm-project/llvm/lib/Transforms/Scalar
Weiming Zhao b69babd01e Fix bug 25440: GVN assertion after coercing loads
Optimizations like LoadPRE in GVN will insert new instructions.
If the insertion point is in a already processed BB, they should
get a value number explicitly. If the insertion point is after
current instruction, then just leave it. However, current GVN framework
has no support for it.
In this patch, we just bail out if a VN can't be found.

Dfferential Revision: http://reviews.llvm.org/D14670

A    test/Transforms/GVN/pr25440.ll
M    lib/Transforms/Scalar/GVN.cpp

llvm-svn: 253536
2015-11-19 02:45:18 +00:00
..
ADCE.cpp [PM] Port ADCE to the new pass manager 2015-10-30 23:13:18 +00:00
AlignmentFromAssumptions.cpp Change memcpy/memset/memmove to have dest and source alignments. 2015-11-18 22:17:24 +00:00
BDCE.cpp Add GlobalsAA as preserved to a bunch of transforms 2015-09-10 10:22:12 +00:00
CMakeLists.txt LLE 6/6: Add LoopLoadElimination pass 2015-11-03 23:50:08 +00:00
ConstantHoisting.cpp Scalar: Remove some implicit ilist iterator conversions, NFC 2015-10-13 18:26:00 +00:00
ConstantProp.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
CorrelatedValuePropagation.cpp [CVP] Fold return values if possible 2015-11-04 01:43:54 +00:00
DCE.cpp Scalar: Remove some implicit ilist iterator conversions, NFC 2015-10-13 18:26:00 +00:00
DeadStoreElimination.cpp Change memcpy/memset/memmove to have dest and source alignments. 2015-11-18 22:17:24 +00:00
EarlyCSE.cpp [ScalarOpts] Remove dead code. 2015-10-15 15:08:58 +00:00
FlattenCFGPass.cpp Scalar: Remove some implicit ilist iterator conversions, NFC 2015-10-13 18:26:00 +00:00
Float2Int.cpp Prune trailing whitespaces. 2015-09-22 11:19:03 +00:00
GVN.cpp Fix bug 25440: GVN assertion after coercing loads 2015-11-19 02:45:18 +00:00
IndVarSimplify.cpp Revert "[IndVarSimplify] Rewrite loop exit values with their initial values from loop preheader" 2015-11-03 07:14:39 +00:00
InductiveRangeCheckElimination.cpp Scalar: Remove some implicit ilist iterator conversions, NFC 2015-10-13 18:26:00 +00:00
JumpThreading.cpp [ValueTracking] Add parameters to isImpliedCondition; NFC 2015-11-06 19:01:08 +00:00
LICM.cpp Revert "Revert "Strip metadata when speculatively hoisting instructions (r252604)" 2015-11-18 14:50:18 +00:00
LLVMBuild.txt Update libdeps in LLVMipo and LLVMScalarOpts, corresponding to r245940. 2015-08-25 17:11:17 +00:00
LoadCombine.cpp [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
LoopDeletion.cpp Add GlobalsAA as preserved to a bunch of transforms 2015-09-10 10:22:12 +00:00
LoopDistribute.cpp Allow LLE/LD and the loop versioning infrastructure to use SCEV predicates 2015-11-09 13:26:09 +00:00
LoopIdiomRecognize.cpp Change memcpy/memset/memmove to have dest and source alignments. 2015-11-18 22:17:24 +00:00
LoopInstSimplify.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
LoopInterchange.cpp Convert assert(false) into llvm_unreachable where it makes sense. 2015-10-25 22:28:27 +00:00
LoopLoadElimination.cpp Allow LLE/LD and the loop versioning infrastructure to use SCEV predicates 2015-11-09 13:26:09 +00:00
LoopRerollPass.cpp [ScalarOpts] Remove dead code. 2015-10-15 15:08:58 +00:00
LoopRotation.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
LoopStrengthReduce.cpp [LoopStrengthReduce] Don't increment iterator past the end of the BB 2015-11-16 17:37:58 +00:00
LoopUnrollPass.cpp [ScalarOpts] Remove dead code. 2015-10-15 15:08:58 +00:00
LoopUnswitch.cpp LoopPass: Simplify the API for adding a new loop. NFC 2015-10-22 21:21:32 +00:00
LowerAtomic.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
LowerExpectIntrinsic.cpp fix typo; NFC 2015-08-24 20:11:14 +00:00
Makefile
MemCpyOptimizer.cpp Change memcpy/memset/memmove to have dest and source alignments. 2015-11-18 22:17:24 +00:00
MergedLoadStoreMotion.cpp Fix some Clang-tidy modernize warnings, other minor fixes. 2015-11-04 22:32:32 +00:00
NaryReassociate.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
PartiallyInlineLibCalls.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
PlaceSafepoints.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
Reassociate.cpp Add intermediate subtract instructions to reassociation worklist. 2015-11-16 18:07:30 +00:00
Reg2Mem.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
RewriteStatepointsForGC.cpp [RS4GC] Strip noalias attribute after statepoint rewrite 2015-10-26 19:06:01 +00:00
SCCP.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
SROA.cpp Change memcpy/memset/memmove to have dest and source alignments. 2015-11-18 22:17:24 +00:00
Scalar.cpp LLE 6/6: Add LoopLoadElimination pass 2015-11-03 23:50:08 +00:00
ScalarReplAggregates.cpp Change memcpy/memset/memmove to have dest and source alignments. 2015-11-18 22:17:24 +00:00
Scalarizer.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
SeparateConstOffsetFromGEP.cpp Replace dyn_cast with isa in places that weren't using the returned value for more than a boolean check. NFC. 2015-11-18 07:07:59 +00:00
SimplifyCFGPass.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
Sink.cpp [Sink] Don't move landingpads 2015-11-16 04:47:58 +00:00
SpeculativeExecution.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
StraightLineStrengthReduce.cpp [SCEV] Introduce ScalarEvolution::getOne and getZero. 2015-09-23 01:59:04 +00:00
StructurizeCFG.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
TailRecursionElimination.cpp Add 'notail' marker for call instructions. 2015-11-06 23:55:38 +00:00