mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 12:54:27 +00:00
Apply llvm fix for assertion/crash building math/vtk
Merge commit 307ace7f20d5 from llvm git (by David Sherwood): [LoopVectorize] Ensure the VPReductionRecipe is placed after all it's inputs When vectorising ordered reductions we call a function LoopVectorizationPlanner::adjustRecipesForReductions to replace the existing VPWidenRecipe for the fadd instruction with a new VPReductionRecipe. We attempt to insert the new recipe in the same place, but this is wrong because createBlockInMask may have generated new recipes that VPReductionRecipe now depends upon. I have changed the insertion code to append the recipe to the VPBasicBlock instead. Added a new RUN with tail-folding enabled to the existing test: Transforms/LoopVectorize/AArch64/scalable-strict-fadd.ll Differential Revision: https://reviews.llvm.org/D129550 Reported by: yuri PR: 264834 MFC after: 3 days
This commit is contained in:
parent
9f6f9007b9
commit
91ec809f0a
|
@ -9453,7 +9453,9 @@ void LoopVectorizationPlanner::adjustRecipesForReductions(
|
|||
WidenRecipe->getVPSingleValue()->replaceAllUsesWith(RedRecipe);
|
||||
Plan->removeVPValueFor(R);
|
||||
Plan->addVPValue(R, RedRecipe);
|
||||
WidenRecipe->getParent()->insert(RedRecipe, WidenRecipe->getIterator());
|
||||
// Append the recipe to the end of the VPBasicBlock because we need to
|
||||
// ensure that it comes after all of it's inputs, including CondOp.
|
||||
WidenRecipe->getParent()->appendRecipe(RedRecipe);
|
||||
WidenRecipe->getVPSingleValue()->replaceAllUsesWith(RedRecipe);
|
||||
WidenRecipe->eraseFromParent();
|
||||
|
||||
|
|
Loading…
Reference in a new issue