llvm-project/llvm/lib/Transforms/Vectorize
Alexey Bataev 6a278d9073 [SLP] Fix for PR31847: Assertion failed: (isLoopInvariant(Operands[i], L) && "SCEVAddRecExpr operand is not loop-invariant!")
Summary:
Initially SLP vectorizer replaced all going-to-be-vectorized
instructions with Undef values. It may break ScalarEvaluation and may
cause a crash.
Reworked SLP vectorizer so that it does not replace vectorized
instructions by UndefValue anymore. Instead vectorized instructions are
marked for deletion inside if BoUpSLP class and deleted upon class
destruction.

Reviewers: mzolotukhin, mkuper, hfinkel, RKSimon, davide, spatel

Subscribers: RKSimon, Gerolf, anemet, hans, majnemer, llvm-commits, sanjoy

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

llvm-svn: 372626
2019-09-23 16:25:03 +00:00
..
CMakeLists.txt [LV][VPlan] Change to implement VPlan based predication for 2019-01-23 22:43:12 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LoadStoreVectorizer.cpp [LoadStoreVectorizer] vectorizeLoadChain - ensure we find a valid Type down the load chain. NFCI. 2019-09-15 16:44:35 +00:00
LoopVectorizationLegality.cpp [Loads] Move generic code out of vectorizer into a location it might be reused [NFC] 2019-09-10 21:33:53 +00:00
LoopVectorizationPlanner.h [LV] Scalar Epilogue Lowering. NFC. 2019-07-25 08:06:02 +00:00
LoopVectorize.cpp [LoopVectorize] Don't dereference a dyn_cast result. NFCI. 2019-09-17 13:24:54 +00:00
SLPVectorizer.cpp [SLP] Fix for PR31847: Assertion failed: (isLoopInvariant(Operands[i], L) && "SCEVAddRecExpr operand is not loop-invariant!") 2019-09-23 16:25:03 +00:00
VPRecipeBuilder.h [LV] Move getScalarizationOverhead and vector call cost computations to CM. (NFC) 2019-05-15 10:05:49 +00:00
VPlan.cpp [LV] Fold tail by masking - handle reductions 2019-08-28 09:02:23 +00:00
VPlan.h [LV][VPlan] Change to implement VPlan based predication for 2019-01-23 22:43:12 +00:00
VPlanDominatorTree.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
VPlanHCFGBuilder.cpp Hide two unused debugging methods, NFCI. 2019-03-01 17:15:21 +00:00
VPlanHCFGBuilder.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
VPlanHCFGTransforms.cpp [VPlan] Silence static analyzer dyn_cast null dereference warning. NFCI. 2019-09-22 13:02:00 +00:00
VPlanHCFGTransforms.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
VPlanLoopInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
VPlanPredicator.cpp Update files that were mistakenly added with the old file header to the 2019-02-11 08:07:38 +00:00
VPlanPredicator.h Update files that were mistakenly added with the old file header to the 2019-02-11 08:07:38 +00:00
VPlanSLP.cpp [VPlanSLP] Don't dereference a cast_or_null<VPInstruction> result. NFCI. 2019-09-16 11:22:44 +00:00
VPlanValue.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
VPlanVerifier.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
VPlanVerifier.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Vectorize.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00